cmd.exe中如何用百分号替换?
How to replace with percent character in cmd.exe?
在 Windows 命令提示符中,我试图用字符串 %20
替换 set string=Hello World
中的 space。像这样天真地尝试使用字符串文字 %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, which handles the escaping of percent characters in variables. I also found this,它处理百分比字符的转义输入。但是似乎都不适用于字符串替换。
我在网上找到的一个 tutorial/docu page for the Windows cmd.exe 告诉我语法正确,但不包括用百分比字符替换。
看完所有这些之后,我尝试了:
setlocal EnableDelayedExpansion
set string=!string: =%20!
结果是 !string: =%20!
.
我没主意了,你能帮忙吗?
在这种情况下您需要 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%
在 Windows 命令提示符中,我试图用字符串 %20
替换 set string=Hello World
中的 space。像这样天真地尝试使用字符串文字 %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, which handles the escaping of percent characters in variables. I also found this,它处理百分比字符的转义输入。但是似乎都不适用于字符串替换。
我在网上找到的一个 tutorial/docu page for the Windows cmd.exe 告诉我语法正确,但不包括用百分比字符替换。
看完所有这些之后,我尝试了:
setlocal EnableDelayedExpansion
set string=!string: =%20!
结果是 !string: =%20!
.
我没主意了,你能帮忙吗?
在这种情况下您需要 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%