Windows下用指令碼批量重新命名檔案
阿新 • • 發佈:2018-11-24
1. 我的效果:
2. reference
reference:https://blog.csdn.net/txz317/article/details/52326041
在Windows下可以用指令碼批量重新命名檔案,且可以將檔名按指定的字串格式命名,並按序號遞增或遞減。指令碼如下:
@echo off&setlocal EnableDelayedExpansion set a=1 for /f "delims=" %%i in ('dir /b *.wav') do ( if not "%%~ni"=="%~n0" ( if !a! LSS 10 (ren "%%i" "sp0!a!_airport_sn0.wav") else ren "%%i" "sp!a!_airport_sn0.wav" set/a a+=1 ) )
命令解釋:
set a = 1 是設定遞增的變數,檔案遞增或遞減的起始值
第三行中括號內 (dir /b .wav)中.wav可以替換成任意可以匹配的字串,如匹配含有string,且字尾是jpg的檔案,則可以(dir /b *string*.jpg)
第三行是說如果檔名和自己本身一樣,則不替換,否則指令碼執行時會把自己也更改掉
第五行的if判斷是為了統一編號命名,當a小於10時,比如a等於1,則命名時為01;雙引號內的“sp0!a!_airport_sn0.wav” 是檔名的命名格式,可以任意替換。
set/a a+=1 ,設定遞增變數,也可以設定為遞減,或者任意遞增遞減區間
注意:
請將指令碼修改並複製到記事本中,並另存為.bat檔案(ren.bat),另存為的時候檔案型別選“任何檔案”,檔名字尾上加.bat。
務必將此指令碼放在需要重新命名的資料夾下,就是說此指令碼應該要和需要重新命名的檔案放在同一目錄下。
3. 我的實驗:
@echo off&setlocal EnableDelayedExpansion
set a=1
for /f "delims=" %%i in ('dir /b *.jpg') do (
if not "%%~ni"=="%~n0" (
if !a! LSS 10 (ren "%%i" "car00!a!.jpg") else if !a! LSS 100 (ren "%%i" "car0!a!.jpg") else ren "%%i" "car!a!.jpg"
set/a a+=1
)
)