У меня есть следующий код: сочетание пакетной и linux-dos (команда gawk). У меня нет источника (sortgrad с параметрами -d -v -g -r), поэтому никакого контроля над ним нет. Код работает хорошо, за исключением случаев, когда sortgrad зависает, тогда я должен использовать control + C и он продолжает работать в следующем каталоге, но он не обновляет параметры ввода (переменные) в sortgrad. Тогда у меня есть две проблемы: как продолжить цикл for без управления + C, когда это необходимо, и проблема перепадающих переменных. Благодаряпеременные не обновляются после управления + C в пакетном файле
for /f "eol= " %%i in (tests) do (
cd %%i
echo.2 > input
echo.y >> input
echo.1 >> input
echo.%%i.out >> input
gawk "{print $1}" data > v
gawk "{print $2}" data > g
set /p grad= < g
set /p vel= < v
echo %grad% | gawk "{print $1-0.03}" > g1
echo %grad% | gawk "{print $1+0.03}" > g2
set /p gmin= < g1
set /p gmax= < g2
cmd.exe /C "sortgrad -d vanloc.dvr -v %vel% 7.0 -g %gmin% %gmax% -r 1.70 1.80" < "input" > result
cd..)
просто идея: что произойдет, если вы разместите утверждения своего цикла Loop в подпрограмме и вызовите его? т.е. для/f "eol =" %% i in (tests) do 'call: sub' – loco