windows 使用正则表达式按顺序重命名文件,保持“连接”文件名模式

ybzsozfc  于 2023-08-07  发布在  Windows
关注(0)|答案(1)|浏览(149)

我试图重组包含编辑文件以及原件的照片库。我已经使用Exif排序器实现了所需的文件夹结构,即%UserProfile%\Photos\%year%\%month%\%day%
每个%day%文件夹包含的照片图像文件的名称模式略有不同:

IMG_0001.jpg
ZMGM00002.jpg
ZMGM00003 (Edited).jpg
ZMGM00003.jpg
IMG_0002 (Edited).jpg
IMG_0002.jpg
IMG_0004.jpg

字符串
我希望文件按顺序命名,但保留相关的“(Edited)”后缀:

DSC_0001.jpg
DSC_0002.jpg
DSC_0002 (Edited).jpg
DSC_0003.jpg
DSC_0004 (Edited).jpg
DSC_0004.jpg
DSC_0005.jpg


到目前为止,我想出了正则表达式来重命名“*.jpg”和“* (Edited).jpg”,保留它的“后缀”部分,当它存在时(“(Edited)”)(抱歉,我使用RegexRenamer,因为我是初学者):

  • 匹配字符串^(\D+)(_)?(\d+)(Edited)?
  • 替换字符串DCS_$#$4

然而,我在所有文件中获得了顺序编号,因此编辑文件的相关性丢失了:

DSC_0001.jpg
DSC_0002.jpg
DSC_0003 (Edited).jpg
DSC_0004.jpg
DSC_0005 (Edited).jpg
DSC_0006.jpg
DSC_0007.jpg


有没有什么方法可以重命名文件并保留它们之间的文件名“连接”模式,即。所以我得到DSC_0002 (Edited).jpg & DSC_0002.jpg而不是DSC_0002 (Edited).jpg & DSC_0003.jpg
由于我有成千上万的文件夹,重命名应该是追索权和序列应重新启动与每个新的文件夹。我相信这需要PowerShell或批处理脚本来确定所需的条件,但我不确定从哪里开始。我愿意接受这样的想法,也许我可以先通过Excel处理文件名,然后从TXT/CSV文件批量重命名。
附注:我从90年代末开始就有80000张家庭照片,手工处理要花很长时间。我可以在Windows和macOS中运行任何东西来解决这个问题(不过我更喜欢Windows)。

hmae6n7t

hmae6n7t1#

我想回答我自己的问题,因为我在Stefan Trost和他的FileRenamer应用程序的帮助下解决了这个问题。基本上Stefan已经从头开始实现了该功能,并且可以免费提供给每个人。
以下是FileRenamer设置,以防将来有人遇到同样的问题:

Settings
Numbering
Reset numbering with every new folder                                                   On
Do not increase at files with the same name in the file list one after the other        On
Do not increase at files with the same name root in the file list one after the other   On

字符串
这里是正则表达式和它的设置在主窗口:

Name
Search for:                         ^.*([0-9]{2})
Replace with:                       IMG_%000num%
Interpret as Regular Expression:    On


这将遍历所有子文件夹或文件夹,并根据模式重命名每个文件,并保持唯一的后缀,正如在开幕式上所描述的那样:

DSC_0001.jpg
DSC_0002.jpg
DSC_0002 (Edited).jpg
DSC_0003.jpg
DSC_0004 (Edited).jpg
DSC_0004.jpg
DSC_0005.jpg


P.S.这里有一个link我的要求在FileRenamer支持门户网站,所以没有人认为这篇文章是一个广告。

相关问题