1. 程式人生 > >用批處理檔案改檔名

用批處理檔案改檔名

問題:

我現在需要把一個資料夾裡的幾十個檔案改名為對應的檔名,對應關係已經有了。
比如說
原來的檔名 需要改為的檔名
北京.txt 01.txt
天津.txt 02.txt
河北.txt 03.txt
我想寫一個bat檔案一次執行所有的修改,請問這個批處理檔案該怎麼寫?原來dos時代的東西學的不好。謝謝各位了

解決方法:


假設你已經有一個檔案city.txt有如下內容:
北京 01
天津 02
河北 03
……
那麼可以這樣寫這個批處理:
@ECHO OFF
FOR /F "tokens=1,2" %%a IN (city.txt) DO (
IF EXIST %%a% %.txt (
REN %%a% %.txt %%b% %.txt
)
)


那首先要修改city.txt的內容成這樣格式(分隔符改為逗號,):
北京,0001
天津,0002
河北,0003
bbc radio,0004
……

批處理改為:
@ECHO OFF
FOR /F "tokens=1,2 delims=," %%a IN (city.txt) DO (
IF EXIST "%%a% %.txt" (
REN "%%a% %.txt" %%b% %.txt
)
)

說明: 


恩,挺好使的,這位大哥能簡單解釋一下嗎?我不知道%%a是什麼用的,看了windows的幫助還是不太明白.我把你的語句改成了
FOR /F "tokens=1,2" %a IN (city.txt) DO REN "%a.txt" %b.txt
這在命令列下能執行可是在bat中就不行了,為什麼呢?


你可以檢視FOR/?,裡面有說到,在命令列中使用變數時,變數名前只用一個%,而用在批處理中要用兩個%%。

之所以改名語句要
REN "%%a% %.txt" %%b% %.txt
這樣寫,這也是我試出來的,呵呵!你把前面的@ECHO OFF去掉,再執行這個bat,就會看到CMD是如何替換這些變數的了。(我就是這樣“除錯”bat的^_^)