如何使用Windows批处理重命名文件并替换子字符串

28
我想通过使用 Windows 批处理文件重命名文件名,将文件名从 "how-to-rename-file.jpg" 改为 "how-to-reuse-file.jpg"。即我只想在文件名中替换一个或两个单词。请注意保留原有的 html 标签格式。

1
请添加您尝试过的内容。此外,我们需要更多信息。 - BDM
考虑尝试使用批量重命名工具 - Danny Beckett
@casperOne 嗯... 我觉得有点太严格了。 - Steve Gon
2个回答

57
@echo off

Set "Filename=how-to-rename-file.jpg"
Set "Pattern=rename"
Set "Replace=reuse"

REM Call Rename "%Filename%" "%%Filename:%Pattern%=%Replace%%%"

Call Echo %%Filename:%Pattern%=%Replace%%%
:: Result: how-to-reuse-file.jpg

Pause&Exit

我给你另一个文件循环的例子:

更新:

因为我上次编辑太快错过了一些语法问题,这里是更正后的代码:

@echo off
Setlocal enabledelayedexpansion

Set "Pattern=rename"
Set "Replace=reuse"

For %%# in ("C:\Folder\*.jpg") Do (
    Set "File=%%~nx#"
    Ren "%%#" "!File:%Pattern%=%Replace%!"
)

Pause&Exit

提示:您可以在此阅读有关子字符串的更多信息: http://ss64.com/nt/syntax-substring.html http://ss64.com/nt/syntax-replace.html


5
第二个代码正是我所需要的。非常感谢你的帮助。另外也谢谢你提供了学习字符串的链接,我发现这个链接非常有用 :-) - Varun
1
为什么你使用了 Set "File=%%~nx#", 而不是简单的 Set "File=%%#" ? - Marco Demaio
1
@Marco Demaio 介绍保留关键词中的新用户。 - ElektroStudios
@ElektroStudios:啊,好的,抱歉,我以为你在谈论 Windows 操作系统中的用户权限。谢谢! - Marco Demaio
1
不幸的是,似乎无法替换像ç或õ这样的“特殊”字符。 - Vinícius M
显示剩余2条评论

37

上面的代码没有重命名文件 - 路径是一个问题,源文件名不正确。

这将适用于当前文件夹中的文件 - 除了名称中带有!的文件将会出现问题。

@echo off
Setlocal enabledelayedexpansion

Set "Pattern=rename"
Set "Replace=reuse"

For %%a in (*.jpg) Do (
    Set "File=%%~a"
    Ren "%%a" "!File:%Pattern%=%Replace%!"
)

Pause&Exit

1
pushd "c:\folder" 放在循环上方,或使用 cd /d "c:\folder" - foxidrive
@foxidrive 您的解决方案非常美丽。非常精确而且易于理解。对我帮助很大。 - nam
2
这个很好用。现在你能让它递归到子文件夹吗? - Scott Hutchinson
@RodrigoZuluaga 我很好奇你们是怎样让它工作的。我尝试了以上所有方法,但对我来说都没有成功。 - Data Engineer
@enigma6205 在记事本中创建一个名为yourname.bat的文件,将顶部代码放入其中,并将该文件放置在您要重命名的文件所在的位置。如果您不想使用bat文件,可以下载Bulk Rename Utility。我不认为我被允许在这里放置URL,因此请在谷歌上搜索,该网站是.co.uk。我发现这个工具可以用来进行批量重命名,替代了我所有的bat文件。 - Rodrigo Zuluaga
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接