所以我有这个问题,我的批处理循环不起作用,我还没有找到任何解决方案。它一直说“(此时此刻意外”。有人可以帮忙吗?
for /F %%G IN ('TYPE info.txt') DO (
set /a cnt+=1
set /a div=%cnt% %% 2
if %div% == 0 {
set ord=%%G
echo %ord%
}
)
答案 0 :(得分:1)
仅当您使用delayed expansion时才有效,否则您的所有变量只会被评估一次。
Setlocal EnableDelayedExpansion
set cnt=0
for /F %%G IN ('TYPE info.txt') DO (
set /a cnt+=1
set /a div=!cnt! %% 2
if !div!==0 (
set ord=%%G
echo !ord!
)
)
或者您可以使用标签。
for /F %%G IN ('TYPE info.txt') DO call :line %%G
goto :EOF
:line
set /a cnt+=1
set /a div=%cnt% %% 2
if "%div%"=="0" call :div0 %1
goto :EOF
:div0
set ord=%1
echo %ord%
goto :EOF