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

问题描述:

我试图用批处理脚本替换文件名中的字符串,但如果文件具有惊叹号或与符号,则会遇到问题。使用感叹号和&符号替换使用批处理的文件名中的字符串

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 
) 
+0

我以为我试过这个,但必须有交换的东西。谢谢! –