我的(結果)資料夾旁邊有一個 .bat 檔案。
該資料夾包含具有不同名稱的 .jpg 檔案。
我正在嘗試編寫一個 .bat 文件,以便它重命名此資料夾中的所有這些文件。
它有效,但不完全有效。問題是這樣的:
它僅適用於文件所在的目錄。
setlocal enabledelayedexpansion
set "count=1000"
set a="Result\*.jpg"
for /f "usebackq delims=*" %%f in (`dir /b /o:-d /tc %a%`) do (ren "%%f" file-!count:~1!.jpg
set /a count+=1
)
pause
答案1
這是解決方案..
您只需編寫路徑即可轉到該資料夾cd / d Result
setlocal enabledelayedexpansion
cd /d Result
set "count=1000"
set a="*.jpg"
for /f "usebackq delims=*" %%f in (`dir /b /o:-d /tc %a%`) do (ren "%%f" file-!count:~1!.jpg
set /a count+=1
)
pause
設定本地啟用延遲擴展透過符號擴展變數 (!)
cd / d 結果轉到結果資料夾
設定“計數 = 1000”我在其中標記了零的數量的變量檔案-001.jpg
設定a=“*.jpg”該變數指示我們正在尋找哪些文件。
( dir /b /o:-d /tc %a%
)
目錄- 顯示檔案和子目錄的清單。接下來我們進行排序。
/b- 僅顯示檔案名稱。
/o:-d- 依相反順序對顯示文件清單進行排序(從最新到最舊)。
/tc- 依檔案建立時間排序。
%A%- 呼叫變數。
回溯設定對檔案名稱使用引號的能力像這樣> 」。
指定將字串作為指令執行,用反引號括起來像這樣> `,
單引號中的字串就像字串中的命令像這樣> '。
分隔符號 = xxx指定一組分隔符號。覆蓋預設的空格製表符分隔符集。
答案2
你的問題對我來說不是很清楚(我的英語很弱而且很差),我不明白它會是什麼:
它僅適用於文件所在的目錄。
- 我想您想遞歸地重命名,這是對此的編輯。
@echo off
set "_cnt=1000" && cd /d "%~dp0Result"
for /f tokens^=* %%I in ('dir /o:-d /tc /b /s *.jpg
')do set /a "_cnt+=1" && cmd /v /c "ren "%%~fI" file-!_cnt:~-3!.jpg"
%__AppDir__%timeout.exe /t -1 & goto :EOF
1.進入bat所在資料夾:
cd /d "%~dp0Result"
2.遞歸列出您的文件dir ... /b /s
for /f tokens^=* %%I in ('dir /o:-d /tc /b /s *.jpg
3.增加你的會計師
set /a "_cnt+=1"
4.使用計數器循環重命名文件
cmd/v/c "ren "%%~fI" file-!_cnt:~-3!.jpg"
觀察。如果我與您正在尋找的東西相距甚遠,請告訴我...
- 根據您的答案提供替代方案
@echo off
setlocal enabledelayedexpansion
set "_cnt=100" && cd /d "%~dp0"
for /f tokens^=* %%I in ('dir/b/o:-d/tc/b/s "Result\*.jpg"
')do rename "%%~fI" file-!_cnt:~-3!.jpg & set /a "_cnt+=1"
%__AppDir__%timeout.exe /t -1 & endlocal & goto :EOF