批处理文件中的字符串替换(星号)?

Meh*_*dad 4 batch-file

如何在批处理文件中用其他内容替换字符串中的星号

%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)

这样做的正确方法是什么?

jeb*_*jeb 7

像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)