Я хочу изменить несколько конкретных строк числа текстовых файлов, и я написал пакетный файл следующим образом:Windows, партия: задержка расширения в цикле
@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