批处理中通常替换方法是 set var=%var:A=B%
但是星号是这样替换不起作用的
set var=%var:*=X% <----- 出错 此时不应有 =%
set var=%var:^*=X% <------ 这样星号还是没有替换
set var=%var:**=X% <------ 这样只替换第一个星号 第二个星号还是没有替换 并且丢失第一个星号左边的字符串
:: Replace all asterisk characters in a variable :: Usage: :: set-ast <variable-name> <replacement-value> @echo off @setlocal enabledelayedexpansion set variable=%~1 set value=!%~1! set replacement=%~2 :loopback set righthand=!value:**=! if ["%value%"]==["%righthand%"] (goto quit) if ["%righthand%"]==[""] ( set lefthand=%value:~,-1% ) else ( set lefthand=!value:%righthand%=! set lefthand=!lefthand:~0,-1! ) set value=%lefthand%%replacement%%righthand% goto loopback :quit for /f "delims=" %%v in ("!value!") do ( endlocal set "%variable%=%%v" )