使用批处理替换带有感叹号和符号的文件名中的字符串

时间:2017-03-16 15:47:44

标签: windows batch-file batch-rename

我正在尝试使用批处理脚本替换文件名中的字符串,但如果文件有感叹号或符号,则会遇到问题。

Setlocal enabledelayedexpansion
Set "Pattern=[String_A]"
Set "Replace=[B_String]"
For %%a in (*.*) Do (
    Set "File=%%~a"
    Ren "%%a" "!File:%Pattern%=%Replace%!"
)

上面的代码适用于没有这些代码的文件名,但我需要帮助。

这是我必须多次运行的东西(它是更大脚本的一部分)。

感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

问题是如果禁用延迟扩展,set "file=%%~a中的扩展将是安全的 解决方案是切换延迟扩展模式。

Setlocal DisableDelayedExpansion
Set "Pattern=[String_A]"
Set "Replace=[B_String]"
For %%a in (*.*) Do (
    Set "File=%%~a"
    Setlocal EnableDelayedExpansion
    Ren "!file!" "!File:%Pattern%=%Replace%!"
    endlocal
)