我想修改的文本文件數的幾個特定的行,我寫了一個批處理文件,如下所示: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