我有以下代碼:使用變量 'for' 循環
@echo off
SET ITER=0
for %%i in (%*) do (
SET ITER+=1
ECHO %ITER%
)
的輸出是(對於三個參數):
0
0
0
預期輸出:
1
2
3
爲什麼我無法訪問for
循環中的更新變量?
我有以下代碼:使用變量 'for' 循環
@echo off
SET ITER=0
for %%i in (%*) do (
SET ITER+=1
ECHO %ITER%
)
的輸出是(對於三個參數):
0
0
0
預期輸出:
1
2
3
爲什麼我無法訪問for
循環中的更新變量?
在執行語句/塊之前,用百分數擴展變量。
因此,在你的情況下,在執行echo %ITER%
之前將完整塊展開爲常數echo 0
。
變量ITER本身在循環中正確更新。
爲了避免這種情況,你可以使用延遲擴展,這就像擴展%,但只是在執行
@echo off
setlocal EnableDelayedExpansion
SET ITER=0
for %%i in (%*) do (
SET /a ITER+=1
ECHO !ITER!
)
@downvoter任何理由的時刻? :) – Jacob 2011-07-27 08:26:09
[批處理文件變量在for循環中初始化]可能的重複(https://stackoverflow.com/questions/691047/batch-file-variables-initialized-in-a-for-loop) – 2017-11-09 12:16:20