在Windows命令提示符下,我尝试将set string=Hello World
中的空格替换为字符串%20
。天真地尝试使用字符串文字%20:
set string=%string: =%20%
结果为HelloWorld20%
。试图像这样使用转义字符^
:
set string=%string: =^%20%
也会产生HelloWorld20%
。试图通过加倍%
来逃避它:
set string=%string: =%%20%
结果为HelloWorld%20%
。我还尝试使用另一个变量进行替换,如下所示:
set r=%20
set string=%string: =%r%%
会产生HelloWorldr%%
。
我找到this,它处理变量中百分比字符的转义。我还找到this,它处理转义百分比字符的输入。但似乎没有人适用于字符串替换。
我在网上找到的tutorial/docu page for the Windows cmd.exe告诉我我的语法正确,但不包括用百分号替换。
阅读完所有内容后,我尝试了:
setlocal EnableDelayedExpansion
set string=!string: =%20!
会产生!string: =%20!
。
我没有想法,你能帮忙吗?
答案 0 :(得分:3)
在这种情况下你需要delayed expansion
:
set "str1=Hello World!"
set "str2=%20"
for /f "delims=" %a in ('cmd /v:on /c @echo "%str1: =!str2!%"') do set "str3=%~a"
echo %str3%