怎樣處理重新命名系列案例程式碼

大雄45發表於2021-05-13
導讀 這篇文章主要介紹了批處理重新命名系列案例程式碼

批處理用於文字/檔案的操作確實非常簡單有力!不用多麼複雜的程式碼,僅一個記事本加上簡潔的程式碼即可搞定大部分文字/檔案的操作,下面記錄下我用過的一些程式碼,基本都是我在百度回答知友的一些程式碼,既給澗客們參考,也讓起到備忘的作用。。。。

案例一

想把一個資料夾裡的全部檔案都命名成001,002……這樣按順序,什麼順序無所謂,只要名字都變了就行,誰幫忙寫個

我給出的程式碼:

@echo off  
setlocal enabledelayedexpansion   
set var=1000  
for /r "%~dp0" %%i in (*.*) do (   
 set /a var+=1   
 if not "%%~nxi"=="%~nx0" ren "%%i" !var:~-3!%%~xi   
)  
pause>nul  
echo 處理完畢,任意鍵退出...  
exit

簡單解釋:

  • 1.使用for /r 遍歷當前目錄(%~dp0)下所有檔案,效率比for /f + dir /s /b 高;
  • 2.if not語句用於排除bat檔案本身,全路徑是%0,擴充到bat檔名:%~nx0;
  • 3.利用變數1000開始累加,每次利用!var:~-3!取得後三位,即依次為001、002、003...
案例二

“比如,我有一個資料夾裡的檔案都是X1,、X2…X51,我有個的檔名字是X15.ass,用完以後變成[Yousei-raws] Soul Eater 14 [BDrip 1280x720 x264 FLAC].ass程式碼如下:

@echo off  
set a=0  
setlocal EnableDelayedExpansion  
for %%n in (*.ass) do (  
ren "%%n" "[Yousei-raws] Soul Eater !a! [BDrip 1280x720 x264 FLAC].ass"
set /A a+=1  
)

如何才能讓順序變正確,順便說一下,最後一個51變成了1.

我給出的程式碼:

@echo off   
set a=100  
setlocal EnableDelayedExpansion   
for /f "delims=*" %%n in ('dir /b *.ass') do (  
  set /a a+=1  
  ren "%%n" "[Yousei-raws] Soul Eater !a:~-2! [BDrip 1280x720 x264 FLAC].ass" 
)

簡單解釋:因為a的值,被初始化為0,所以第一個檔案就是0,第二個是1,那麼第15個就是14了。。。程式碼調換了下順序,先給a+1,讓重新命名時a的值為1即可。

Ps:此處使用for+dir 的方式,效率雖然會低一點,但是出錯率也降低了,容易懂!當然一樣可以用for /r。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2772194/,如需轉載,請註明出處,否則將追究法律責任。

相關文章