在Windows命令提示符中,我试图用string%20
replaceset string=Hello World
中的空格。 天真地尝试使用string文字%20像这样:
set string=%string: =%20%
导致HelloWorld20%
。 试图使用转义字符^
像这样:
set string=%string: =^%20%
也导致HelloWorld20%
。 试图通过加倍来逃避%
:
set string=%string: =%%20%
导致HelloWorld%20%
。 我也尝试使用另一个variables来做这样的replace:
set r=%20 set string=%string: =%r%%
这导致HelloWorldr%%
。
我发现这个 ,它处理variables中字符百分比的转义。 我也发现这个 ,它处理百分号字符的转义input。 但似乎都不适用于stringreplace。
我在网上find的Windows cmd.exe的tutorial / docu页面告诉我我有正确的语法,但不包括用百分号replace字符。
读完所有这些之后,我试着:
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%
什么是延迟扩展?