2015-11-06 124 views
1

我有一個批處理文件FOR循環裏面是這樣的:批,總結變量在for循環

set /a target=5 

FOR /L %%G IN (1,1,%target%) DO (
    echo %%G) 

它的工作原理就像一個魅力%%摹會1,2,3,4,5。

現在我要像測試= %% G + 1新wariable,這將是:2,3,4,5,6

但有了這個代碼,它沒有工作。

set /a target=5 

FOR /L %%G IN (1,1,%target%) DO (
    echo %%G 
    set /a test=%%G+1 
    echo %test% 
) 

測試變量將是每一次:6

我該怎麼辦?

感謝 羅伯託

回答

2

您評估其設置FOR循環內部變量時需要使用EnabledDelayedExpansion

@ECHO OFF 
SETLOCAL EnableDelayedExpansion 

set /a target=5 

FOR /L %%G IN (1,1,%target%) DO (
    echo %%G 
    set /a test=%%G+1 

    REM Note the exclamation marks. 
    REM This is delayed expansion notation. 
    echo !test! 
) 

ENDLOCAL 

如果不使用延遲擴展,那麼所有的變量都在第一評估通過FOR循環,因此%test%目前實際上不會有值。 通過打開延遲擴展(並使用!test!表示法),該腳本將在每個傳遞上評估!test!的值。