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

ファイル名に基づいてフォルダを作成する.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 をこの前に置いても機能しません。名前に基づいてフォルダーを作成し、そこにファイルを置くように正しく修正するのを手伝ってくれる人はいますか。これらの投稿を読みましたが、まだフォルダーを作成することすらできません。

答え1

のため遅延拡張設定時に必要そして(コード ブロック) 内で 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!"
)

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

関連情報