0

我扫描了一组大约 100 张打印的照片,为每张照片指定了一个带有前缀和自动递增索引的文件名,当我已经完成了 80 张时,我意识到顺序不正确。无论如何,我继续,完成了,但现在我有 100 个具有这些名称的文件

Prefix1_000.jpg
Prefix1_001.jpg
...
Prefix1_099.jpg

事实证明(假设)图片“Prefix1_080.jpg”实际上应该是该组的第一个,“Prefix1_081.jpg”是第二个,依此类推。

我已经下载了 PFrank,它允许我使用正则表达式批量重命名文件。问题是我对它们知之甚少。

我想将左侧的名称重命名为右侧的名称:

Prefix1_000.jpg --> Prefix2_020.jpg
Prefix1_001.jpg --> Prefix2_021.jpg
...
Prefix1_079.jpg --> Prefix2_099.jpg
Prefix1_080.jpg --> Prefix2_000.jpg
Prefix1_081.jpg --> Prefix2_001.jpg
...
Prefix1_099.jpg --> Prefix2_019.jpg

可以用正则表达式做到这一点吗?如果是这样,您将使用哪种搜索和替换模式?我更改前缀没有问题(以避免自我重叠)。

编辑:不连续性不必是 10 的倍数,如 80。它实际上是一个丑陋的数字,如 81。

4

2 回答 2

1

您可以使用 PowerShell 轻松完成此操作。第一个,剩下的交给你。不应该超过10分钟左右。

Dir Prefix1_00*.jpg | rename-item -newname {  $_.name  -replace "Prefix1_00","Prefix2_02"  }

Dir Prefix1_01*.jpg | rename-item -newname {  $_.name  -replace "Prefix1_01","Prefix2_03"  }

Dir Prefix1_02*.jpg | rename-item -newname {  $_.name  -replace "Prefix1_02","Prefix2_04"  }

Dir Prefix1_03*.jpg | rename-item -newname {  $_.name  -replace "Prefix1_03","Prefix2_05"  }

Dir Prefix1_04*.jpg | rename-item -newname {  $_.name  -replace "Prefix1_04","Prefix2_06"  }

Dir Prefix1_05*.jpg | rename-item -newname {  $_.name  -replace "Prefix1_05","Prefix2_07"  }

Dir Prefix1_08*.jpg | rename-item -newname {  $_.name  -replace "Prefix1_08","Prefix2_00"  }

Dir Prefix1_09*.jpg | rename-item -newname {  $_.name  -replace "Prefix1_09","Prefix2_01"  }

Dir Prefix1_06*.jpg | rename-item -newname {  $_.name  -replace "Prefix1_06","Prefix2_08"  }

Dir Prefix1_07*.jpg | rename-item -newname {  $_.name  -replace "Prefix1_07","Prefix2_09"  }

花了大约10分钟......享受!

于 2012-05-08T23:59:13.563 回答
1

阻力最小的路径可能是分 10 步完成。所以重命名Prefix1_(.)0(.)\.jpgPrefix2_\12\2\.jpg,然后重命名Prefix1_(.)1(.)\.jpgPrefix2_\13\2\.jpg,等等。我不建议尝试使用正则表达式进行算术运算。

在这里简单解释一下语法: each(.)表示任意单个字符 ( .),应记住以供以后使用 ( (...));这\.意味着完全是一个.字符(与您之前看到的“任何单个字符”的含义相反)。然后,在替换中,\1\2表示“第一(...)组”和“第二(...)组”。

正如 Chris Gessler 所说,您也可以使用其他更通用的工具来实现。(如果我遇到同样的问题,我可能会用 Python 来解决。)但是没有特别的理由不使用你拥有的工具。

于 2012-05-09T00:02:18.347 回答