我需要 .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!"
)
要移動錯誤方法的文件,您應該先迭代文件,然後以上述方式分割它們。