使用批处理用感叹号和符号替换文件名中的字符串
Replacing strings in filenames with exclamation marks and ampersand using batch
我正在尝试使用批处理脚本替换文件名中的字符串,但是 运行 如果文件中有感叹号或符号,则会出现问题。
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
)
我正在尝试使用批处理脚本替换文件名中的字符串,但是 运行 如果文件中有感叹号或符号,则会出现问题。
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
)