(此时在FOR循环中出乎意料

时间:2014-06-12 17:59:58

标签: loops batch-file for-loop

所以我有这个问题,我的批处理循环不起作用,我还没有找到任何解决方案。它一直说“(此时此刻意外”。有人可以帮忙吗?

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%
    }
)

1 个答案:

答案 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