【发布时间】:2018-05-27 23:51:34
【问题描述】:
我需要一些关于 .bat 的帮助,我用来重命名包含 多个 字词的文件。我每周都会将数百个下载到一个文件夹中,使用批量重命名实用程序之类的工具会花费一些时间。
我所说的多个词的意思是一个文件可能看起来像:
The Hellblazer 021 (2018)(2 个封面)(数字版)(奥创帝国之子).cbr
我想要一些东西来改变它:
The Hellblazer 021 (2018) (digital) (Son of Ultron-Empire).cbr
我目前使用的句柄将某些内容更改为小写就可以了。
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
SET old=Digital
SET new=digital
for /f "tokens=*" %%f in ('dir /b *.*') do (
SET newname=%%f
SET newname=!newname:%old%=%new%!
move "%%f" "!newname!"
)
我可以在下面添加另一部分来改变不同的词来表达我的心意。问题是,我无法让它识别带有 (2 个封面) 之类的空格,因此无法将其完全从文件名中删除。
有人有什么想法吗?
*为澄清而编辑
【问题讨论】:
-
文件名通常采用
name.extension的形式,您能否提供更准确的输入文件名示例及其匹配所需的输出文件名。这应该由editing your question 完成,不在此评论区回复。 -
如果必须在 Windows 上,您可以随时探索使用 powershell 或 vbscript 获得的额外功能和功能
-
set变量替换有点奇怪:要替换的字符串区分大小写in。因此,尽管看起来很奇怪,但您可以根据需要执行以下操作:SET newname=!newname:%new%=%new%!。所以它也会将DIGITAL或DiGiTaL更改为digital(只是一个旁注,让你为惊喜做好准备) -
您根据什么标准确定要从文件名中删除的部分?总是
(2 covers)?
标签: batch-file renaming