2012-07-05 106 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