使用文件夹名称批量重命名文件?

时间:2014-02-20 21:17:38

标签: batch-file

我正在寻找创建一个脚本,它会在文件夹名称之后重命名文件夹中的所有图像。这将用于一次重命名多个文件夹,因为我正在使用它来标准化我所有漫画的命名方案。所以我会说75 * .cbz在目录中没有解压缩,然后我会在包含子文件夹的文件夹中运行所述脚本,子文件夹包含构成每个漫画的图像以重命名每个图像。

结构例如是:

PageRenamer.bat

系列名称000(年)\

姓名pg1.jpg,姓名pg2.jpg ...姓名pg24.jpg

系列名称001(年)\

系列名称001 000.jpg,系列名称001 001.jpg ...系列名称001 025.jpg

等等...

我正在寻找的最终结果是,在您运行脚本后,每个图像都被命名​​为Series Name 001 (Year) 000.jpg - Series Name 001 (Year) 025.jpg(页面/图像的数量可能会有所不同)并且位于{{1} }文件夹。现在,我希望我的漫画是单层档案。如果有一种方法可以将每个子文件夹(漫画根目录)中的子文件夹中的任何图像移动到根子文件夹(漫画根目录),那就更好了。 例如:

PageRenamer.bat

系列名称000(年)\

系列名称000 \

姓名pg1.jpg,姓名pg2.jpg ...姓名pg24.jpg

系列名称001(年)\

系列名称001 \

系列名称001 \

系列名称001 000.jpg,系列名称001 001.jpg ...系列名称001 025.jpg

等等...

更改它以匹配示例1的格式(包括删除现在未使用的子文件夹)。任何帮助都非常受欢迎我很乐意让脚本足够简单,以完成第一项任务,因为大多数漫画都是一层。如果我不必担心修复那些没有的那些,那将是一个巨大的奖励。

1 个答案:

答案 0 :(得分:0)

我会在这里抛出几行批处理脚本,指出你正确的方向。您可以从这样的forloop开始,它将列出漫画文件夹中的所有子目录:

  for /d %%D in (*) do

然后在那里有第二个forloop,以获取每个子目录中的所有.jpg并重命名它们:

for %%f in (*.jpg) do (
       #here you will want to craft a string for the filename, using the subdirectory name (%D)
       ren "%%F" "your-crafted-string.jpg"
 )

您需要跟踪变量以存储您为命名而处理的文件数量:

 set /A num=0

你可以在内循环中递增每个循环运行:

 set /A num+=1

并为外循环(每个子目录)的每个增量重置它:

 set /A num=0

为每个文件在最里面的循环中制作一个字符串看起来像这样(未经测试):

 ren "%%F" "!%%D%_%num%!.jpg"

你可以把它读作“将[文件]重命名为”[目录名] _ [数字的值] .jpg“