使用感叹号和&符号替换使用批处理的文件名中的字符串
问题描述:
我试图用批处理脚本替换文件名中的字符串,但如果文件具有惊叹号或与符号,则会遇到问题。使用感叹号和&符号替换使用批处理的文件名中的字符串
Setlocal enabledelayedexpansion
Set "Pattern=[String_A]"
Set "Replace=[B_String]"
For %%a in (*.*) Do (
Set "File=%%~a"
Ren "%%a" "!File:%Pattern%=%Replace%!"
)
上面的代码适用于没有这些的文件名,但我需要其他帮助。
这是我必须运行多次(这是更大的脚本的一部分)。
任何帮助表示赞赏。
答
问题是如果延迟扩展被禁用,则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
)
我以为我试过这个,但必须有交换的东西。谢谢! –