【问题标题】:Batch Rename Files using Folder Name?使用文件夹名称批量重命名文件?
【发布时间】:2014-02-21 06:00:15
【问题描述】:

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

结构例如是:

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(页面/图像的数量可能会有所不同)并位于 Series Name 001 (Year)\ 文件夹中。现在这一切都希望我的漫画是单层档案。如果有一种方法可以集成将每个子文件夹(漫画根)内的子文件夹中的任何图像移动到根子文件夹(漫画根)的能力​​,那就更好了。 示例:

PageRenamer.bat

系列名称 000(年份)\

系列名称 000\

名称 pg1.jpg,名称 pg2.jpg...名称 pg24.jpg

系列名称001(年份)\

系列名称 001\

系列名称 001\

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

等等……

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

【问题讨论】:

  • 您当前的脚本是什么样的,您有什么问题? (除非您展示了您已经尝试过的内容以及遇到的问题,否则帖子往往会被关闭)
  • 好吧,我已经搜索和搜索了,我发现了 100 种不同的方法来用 (1)-(25) 编号方案重命名它们,但这既丑陋又不像 000- 那样实用025计划。我无论如何都找不到以这种方式在没有括号的情况下对它们进行编号。我可以编写一些我知道不会工作的 bs 脚本,但我看不到重点,因为正确执行此操作的脚本将完全不同。我也不知道如何归档将图像移动到每个文件夹根目录,但就我而言,这是一个额外的代码行。
  • Binaryatrocity 的代码正是我所处的位置,我不知道如何让这个简单的代码正确地完成这项任务。特别是使用文件夹名称并将图像编号为 000-025,而不是重命名多个文件时使用的默认 (1)-(26)。

标签: batch-file


【解决方案1】:

我将在这里添加几行批处理脚本来为您指明正确的方向。您可以从这样的 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"

您可以将其理解为`rename [the file] as "[Directory name]_[value of num].jpg"

【讨论】:

  • 感谢您的帮助,但这些是我已经知道的基本知识,但无法找到使其发挥作用的方法。特别是因为我想要一个 000-025 编号方案(实际上从 0 开始)而不是 (1)-(26) 方案。另外,我不知道字符串操作或如何编写将使用文件夹名称的字符串。你能帮忙吗?我使用了很多我编写的重命名脚本,但它们都很简单,可以在“。”之前或之后更改内容。这标志着扩展。
  • 您可以编辑您的问题以向我们展示您的尝试吗?我很乐意帮助您弄清楚您在哪里挂断电话。
  • 我总是重命名/移动/删除具有非常特定名称或扩展名的东西到其他特定或基于文件原始名称的东西。我不知道如何在此实例中设置变量以使用 000 格式的文件夹名称和/或编号。
  • 我已经更新了一点答案,让你继续前进!祝你好运。
  • 到目前为止没有运气,这就是我正在尝试的。 @for /r %%f in (*.jpg) do ( set /A num=000 ren "%%F" "!%%D% %num%!.jpg" set /A num+=1)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多