我试图通过将原始字符串与替换字符串进行比较来计算多个变量,从中删除子字符串。它适用于常规变量%var%并且不需要使用延迟扩展的情况,但是有一种方法可以使它与延迟扩展变量一起使用!var!而不是使用第二个FOR循环?以下代码无法计算pat#变量。我确实知道,可以使用不同的方法对它们进行计数,但这只是一个例子来说明我关于替换子串的问题。
@echo off
setlocal EnableExtensions EnableDelayedExpansion
set "pat1=A" & set "pat2=B" & set "pat3=C" & set "pat4=D" & set "pat5=E"
set "pat6=F" & set "pat7=G" & set "pat8=H" & set "pat9=I" & set "pat10=J"
set "patn=;0;1;2;3;4;5;6;7;8;9;"
if not defined patc (
for /f %%l in ('set pat') do (
set "patl=%%l" & set "patl=!patl:~3,1!"
if not "!patn:;!patl!;=!"=="%patn%" (set /a "patc+=1" & echo !patc!)))
exit /b
答案 0 :(得分:2)
你需要使用某种双重扩展
可能有CALL
或FOR-parameter
....
set "patl=%%l" & set "patl=!patl:~3,1!" & echo ;!patl!;
call echo %%patn:;!patl!;=%%
or
FOR /F "delims=" %%S in ("!patn!") do (
echo !patn:;%%S;=!
)