我正在尝试使用批处理脚本替换文件名中的字符串,但如果文件有感叹号或符号,则会遇到问题。
Setlocal enabledelayedexpansion
Set "Pattern=[String_A]"
Set "Replace=[B_String]"
For %%a in (*.*) Do (
Set "File=%%~a"
Ren "%%a" "!File:%Pattern%=%Replace%!"
)
上面的代码适用于没有这些代码的文件名,但我需要帮助。
这是我必须多次运行的东西(它是更大脚本的一部分)。
感谢任何帮助。
答案 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
)