it-swarm-ja.com

ファイル名に基づいてフォルダを作成する.batが必要です

ファイル名に基づいてフォルダを作成し、その中にファイルを配置する.batが必要です。私はこのようにフォーマットされた名前を持っています:

string1 - string2 - string3 - string2 - string3_number.jpg

必要に応じて最初の3つの文字列を受け取るコマンドを見つけましたが、それ以上機能させることはできません。このコマンドをbatに入れようとすると、「-」というフォルダーのみが作成されます。

for /F "tokens=1,2,3 delims=-" %%a in ('dir /B /A-D') do (set string1=%%a&set string2=%%b&set string3=%%c
md "%string1%-%string2%-%string3%")

.batでこの前に@echoをオフにしてsetlocalをオフにすると、誰かがそれを正しくするのを手伝ってくれるので、名前に基づいてフォルダーを作成し、ファイルを配置します。これらの投稿を読みましたが、フォルダーを作成することさえできません。

3
Phenixsus

andを設定するときに delayedexpansion が必要なため、(コードブロック)でvarを使用しても機能しません。

ただし、まったく必要のない変数は変更しないためです。

@Echo off & Setlocal EnableDelayedExpansion

for /F "tokens=1,2,3 delims=-" %%a in ('dir /B /A-D') do (
  set "Folder=%%a-%%b-%%c"
  Rem to remove the trailing space from the Folder
  set "Folder=!Folder:~0,-1!"
  If not exist "!Folder!\" MD "!Folder!"
)

間違ったアプローチであるファイルも移動するには、最初にファイルを反復し、次に上記のようにファイルを分割する必要があります。

3
LotPings