【问题标题】:Batch Script to Rename Files重命名文件的批处理脚本
【发布时间】:2013-03-06 04:38:40
【问题描述】:

我已经彻底寻找可以执行此操作的脚本,因为我知道这个问题已经被问过了......但我对编程知之甚少。我有 66 个文件夹,每个文件夹包含 6 个以 _0、_1、..._5 结尾的文件。示例文件名为 DSC_7789 Panorama_cube_0。我需要一个可以在每个文件夹上运行的脚本,以将_0 替换为_f,将_1 替换为_r,将_2 替换为_b,将_3 替换为_l,将_4 替换为_u,将_5 替换为_d。因此 DSC_7789 Panorama_cube_0 将更改为 DSC_7789 Panorama_cube_f。实际上,我自己曾经做过所有这些……花了一整天的时间。谁能指出我的写作方向?我假设这将在 Visual Basic 中运行。谢谢!

【问题讨论】:

  • 这不是一个脚本......但 AntRenamer 会很好地处理这个问题。 portableapps.com/apps/utilities/ant_renamer_portable
  • BulkRename 是另一个可以做到这一点的应用程序。 +1 用于重命名文件一整天...
  • @marapet -- 哈哈,你的 +1。我同意这一点。
  • 等待一分钟...一整天重命名 396 个文件?我在想 1-2 小时……好吧

标签: vbscript batch-file


【解决方案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 上发布了问答,但它被迁移到了 SuperUser。

【讨论】:

  • +1,但是,老实说,ren *_0 *_f 工作的原因对我来说是个谜。我希望它将名称为name_0 的文件重命名为name_0_f,但它会产生name_f。奇怪...
  • @AndriyM - 是的,我对可行的方法只有粗略的了解。但这仍然需要大量的试验和错误。有一天,我希望鼓起勇气进行实验并完整记录 RENAME 命令到底是如何处理通配符的。我看过旧的 DOS 8.3 格式的文档,但对于支持长文件名的 Windows 来说,没有任何明确的定义。
  • @AndriyM - 我终于发现了重命名通配符规则。请参阅更新答案中的链接:-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多