我想修改的文本文件数的几个特定的行,我写了一个批处理文件,如下所示:Windows批处理:延迟扩展在for循环中
@echo off
set n=0
set n1=10
set n2=40
cd.>output.txt
for /f "delims=" %%i in ('findstr /n .* test.txt') do (
set "var=%%i"
setlocal enabledelayedexpansion
set /a n=!n!+1
echo.!n!
set var=!var:*:=!
rem if !n!=%n1% ...
rem if !n!=%n2% ...
(echo.!var!)>>output.txt
endlocal
)
start output.txt
然而,这并不为工作预期。
经过一些测试,我认为!n!
扩展通常不会延迟。这很奇怪,因为!var!
扩展通常延迟。
顺便说一句,在setlocal enabledelayedexpansion
和endlocal
命令放在for
循环,因为否则的特殊字符!
将被放弃。
如果你解释你正在做什么以及什么不工作,你获得帮助的机会将大大提高。对于不工作的部分,您应该解释预期结果并描述您所看到的内容。 – dbenham
我没有尝试分析你的代码,但是不应该使用'set/a n + = 1'而不是'set/an =!n!+ 1' –
@ panda-34 - 我更喜欢你的建议语法,但都应该工作。 – dbenham