set 不能单独替换*与=,不过结合for的delims=,可以弥补这个不足~- @echo off
- ::把%var%中的*或=删除,只留下abcdef。
- set "var=a*b*c*d*e*f" & set "char=*"
-
- :loop
- set "str="
- echo var替换前: %var%
- for /f "delims=" %%a in ("%var%") do call :recur "%%a"
- echo var替换后: %str%
- echo.
- echo %var%| findstr "\*">nul && (
- set "var=a=b=c=d=e=f"
- set "char=="
- goto :loop
- )
- pause>nul & exit /b
-
- :recur
- for /f "tokens=1* delims=%char%" %%a in ("%~1") do (
- set "str=%str%%%a"
- if "%%~b" neq "" call :recur "%%b"
- )
复制代码 注意用call传递参数时,要用""将其闭合,因为=是默认分隔符,当然也可以用%*来代替%~1。 delims=不能用"作为分隔符,但set可以,总之它们之间有种互补的关系吧,打破这个限制。 |