2017-01-12 40 views
0

我想製作檢查帳戶信息的批處理文件。批處理文件不能在循環中重新分配值

在下面的代碼中,我需要從「網絡帳戶」命令輸出2,3,4行,並且每行需要單獨的進程。

爲此,我使用'cnt'變量,並增加檢查。

但是,'cnt'在#1處沒有增加。

爲什麼發生這種情況,以及如何解決它?

@echo off 
SETLOCAL EnableDelayedExpansion 
net accounts > accountInfo.txt 

set cnt=0 
echo """""""""""""""""""""""""" 
for /f "tokens=1* delims=:" %%G in (accountInfo.txt) do (
ECHO.%%G | FIND /I "mum">Nul && ( 

    SET var=%%~nH 
    Set myvar=!var! 
    set myvar=!myvar: =! 

    echo %%G !myvar! 
    echo %cnt% 

    set /A cnt+=1 ---------- here! #1 
    ) || (ECHO.) 
) 
echo """""""""""""""""""""""""" 
ENDLOCAL 
pause 

回答

0

您在代碼中的其他任何地方都使用DelayedExpansion。爲什麼不在那裏呢?

只要將echo %cnt%改爲echo !cnt!,你應該沒問題。

原因是在括號括起來的批處理代碼塊中一次計算。要查看更新的值,請使用上面所述的DelayedExpansion。

+0

非常感謝! –

+0

不是這樣的:) 4隻眼睛有時看到超過2;) – geisterfurz007