如何在批处理文件中用其他内容替换字符串中的星号?
%MyVar:From=To%如果From是正常的扩展似乎不起作用*.
即,如果我有:
Set MyVar=From
Run Code Online (Sandbox Code Playgroud)
然后这些不起作用:
Echo %MyVar:*=To%
Echo %MyVar:^*=To%
Run Code Online (Sandbox Code Playgroud)
这样做的正确方法是什么?
像Sorpigal这样的解决方案,但是这也处理以星号和多颗星代替的文本,并且它不会引用引号.
@echo off
setlocal EnableDelayedExpansion
rem replace all "*" with "."
set "replace=."
set "var=*One**two***three"
rem Add dummy char to accept also a star in front
set "var=#!var!"
:replaceLoop
for /F "tokens=1 delims=*" %%A in ("!var!") do (
set "prefix=%%A"
set "rest=!var:*%%A=!"
if defined rest (
set "rest=!REPLACE!!rest:~1!"
set Again=1
) else set "Again="
set "var=%%A!rest!"
)
if defined again goto :replaceLoop
set "var=!var:~1!"
echo !var!
exit /b
Run Code Online (Sandbox Code Playgroud)