如何根据文件名中的分隔符修改文件夹中的文件名?
我有一个文件夹,其图像可以根据时间表由不同的程序获取 - 如果图像只包含主要名称(sku#),则程序只能分析图像,而不是摄影师添加的附加数据。名称
使用命令行我可以运行某种脚本来修改文件名&从下划线或连字符后删除所有字符(也需要删除下划线或连字符)
(我不知道是否可以通过Windows命令行完成此操作,但我确实可以选择在cygwin中运行这样的'脚本' - 我更喜欢使用最好用的东西......)
答案 0 :(得分:0)
我没有必要这样做:但通过快速搜索,我找到了this link on another Stack Exchange site.
有些人上传了一些powershell脚本。最佳答案是用于进行大规模名称更改的GUI工具。
有这个CMD的例子:
dir /B > fileList.txt
for /f "tokens=1,2,3" %i in (fileList.txt) DO ren "%i %j %l" %l
第一行将文件列表输出到名为fileList.txt的文件中。第二行将列表中的每个名称分成3个部分,#,“ - ”和名称的其余部分。对于其中的每一个,它都执行重命名命令。
答案 1 :(得分:0)
@ECHO OFF
SETLOCAL
FOR /f "delims=" %%a IN ('dir /b /a-d ^|findstr "_ -"') DO (
FOR /f "delims=_-" %%i IN ("%%a") DO ECHO REN "%%a" "%%i%%~xa" 2>nul
)
FOR /f "delims=" %%a IN ('dir /b /a-d ^|findstr "_ -"') DO ECHO failed ON "%%a"
这应该可以胜任。
第一步是以/b
基本形式(不带标题 - 仅名称)和/a-d
执行目录列表而不使用目录名称。这会被findstr
过滤(下划线或短划线),而%% a依次获取每个过滤的文件名。
下一步是获取这些文件名并将其拆分为_
或-
上的部分。第一个标记(最多但不包括分隔符)应用于%% i,因此所需的rename
是从"%%a"
(原始文件名)到"%%i%%~xa"
- 第一个标记+原始文件名的扩展名。
由于新名称已经存在,重命名的尝试很可能会失败,因此只会忽略错误消息(2>nul
)
最后,查找任何未重命名的文件并报告它们(当然是可选的)
请注意,REN
ame命令仅为ECHO
。这样可以确保在您确认这是您想要执行的操作时,实际上没有任何更改。只需删除ECHO
之前的REN
即可激活重命名。