有人託我寫個批量修改文件名的腳本,之前沒有寫過bat,現學現賣,在此記錄一下。
具體代碼如下:
rem 關閉調試輸出,開啓延遲變量
@echo off&setlocal enabledelayedexpansion
rem 讀取輸入的前綴
set/p a1=請輸入想要添加的前綴:
rem 遍歷當前目錄下的所有文件夾
for /f "delims=" %%a in ('dir /b /a:d') do (
set n=%%a
rem 截取前面四個字符
set n=!n:~0,4!
echo 將%%a轉成%a1%!n!
rem 重命名文件夾,添加指定前綴
ren "%%a" "%a1%!n!"
)
pause
遇到的幾個坑:
- 不要隨便加空格。這點和其他語言不太一樣,如寫成
set n = %%a
,很可能出現意想不到的問題。 - for循環後面的括號裏面算一句代碼,所以循環體中定義的變量無法修改。開始寫成
set n=%n:~0,4%
,發現始終沒起作用。解決辦法是開啓(enabledelayedexpansion
)並使用延遲變量(如!a!
)。