1. 程式人生 > >Windows下用指令碼批量重新命名檔案

Windows下用指令碼批量重新命名檔案

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 
) 
)