2012-07-05 90 views
0

我已經徹底查找了可以執行此操作的腳本,因爲我知道這個問題已經被問過......但我對編程知之甚少。我有66個文件夾,每個文件夾包含6個以_0,_1,... _ 5結尾的文件。示例文件名是DSC_7789 Panorama_cube_0。我需要一個可以在每個文件夾上運行的腳本,用_f替代_0,用_r替換_1,用_b替換_2,用_l替換_3,用_u替換_5,用_d替換_5。因此DSC_7789 Panorama_cube_0將被更改爲DSC_7789 Panorama_cube_f。我實際上已經完成了所有這一切......花了整整一天的時間。任何人都可以指出我的寫作方向?我假設這將在Visual Basic中運行。謝謝!重命名文件的批處理腳本

+1

這不是一個腳本......但是AntRenamer會很好地處理這個問題。 http://portableapps.com/apps/utilities/ant_renamer_portable – Smandoli 2012-07-05 19:15:09

+1

[BulkRename](http://www.bulkrenameutility.co.uk/Main_Intro.php)是可以執行此操作的其他應用程序。 +1重命名文件一整天... – marapet 2012-07-05 19:29:08

+0

@ marapet - 哈哈,你的+1。我同意那個。 – Smandoli 2012-07-05 19:31:51

回答

1

REN命令非常有限,但在你的情況下,它是所有需要的。

要在當前目錄重命名文件:

ren *_0 *_f 
ren *_1 *_r 
ren *_2 *_b 
ren *_3 *_l 
ren *_4 *_u 
ren *_5 *_d 

要重命名在當前目錄下的所有文件及其所有子文件夾(遞歸):

for /d /r %%F in (.) do (
    ren "%%~fF\*_0" *_f 
    ren "%%~fF\*_1" *_r 
    ren "%%~fF\*_2" *_b 
    ren "%%~fF\*_3" *_l 
    ren "%%~fF\*_4" *_u 
    ren "%%~fF\*_5" *_d 
) 

要重命名植根於所有文件特定的文件夾:

for /d /r "c:\your\root\here" %%F in (.) do (
    ren "%%~fF\*_0" *_f 
    ren "%%~fF\*_1" *_r 
    ren "%%~fF\*_2" *_b 
    ren "%%~fF\*_3" *_l 
    ren "%%~fF\*_4" *_u 
    ren "%%~fF\*_5" *_d 
) 


編輯

對於任何感興趣的人,我終於發現並記錄了Windows RENAME如何處理通配符的規則。見How does the Windows RENAME command interpret wildcards?。我最初在StackOverflow上發佈了Q & A,但它已遷移到SuperUser。

+0

+1,但說實話,爲什麼'ren * _0 * _f'工作起來是個謎。我期望它將名稱像'name_0'重命名爲'name_0_f',但它會產生'name_f'。奇怪... – 2012-07-05 22:57:57

+0

@AndriyM - 是的,我只是粗略地瞭解可能的工作。但它仍然是很多嘗試和錯誤。有一天,我希望鼓起勇氣去嘗試並充分記錄RENAME命令如何處理通配符。我已經看到了舊的DOS 8.3格式的文檔,但是對於支持長文件名的Windows沒有任何明確的規定。 – dbenham 2012-07-06 01:25:31

+0

@AndriyM - 我終於發現了RENAME通配符規則。查看更新後的答案中的鏈接:-) – dbenham 2013-03-05 20:40:04