0
我有這個批處理文件:批處理文件意外行爲
for /L %%n in (1,1,10) do (
set a = %%n
echo %%n
echo %a%
)
當我們運行這個%%n
正確顯示爲1,2,3,... 10
但a
總是顯示爲10:10 ,10,10,...,10
是什麼原因?
我有這個批處理文件:批處理文件意外行爲
for /L %%n in (1,1,10) do (
set a = %%n
echo %%n
echo %a%
)
當我們運行這個%%n
正確顯示爲1,2,3,... 10
但a
總是顯示爲10:10 ,10,10,...,10
是什麼原因?
您需要使用延遲擴展。在FOR或IF中,變量在命令執行之前而不是在執行期間「擴展」。 (expanded =變量被其值取代)
爲了更改變量的值並在同一個循環中使用它,您應該使用延遲表達式。
您必須在代碼的開頭寫入SETLOCAL ENABLEDELAYEDEXPANSION
,並且應該延遲擴展的變量應該用感嘆號而不是百分號包圍。
所以echo %a%
成爲echo !a!
編輯
此外,您set a = %%n
是無效的,因爲你在變量 「a」,而不是 「一」 影響n的值。
你必須寫set a=%%n
(不帶空格等號SIGNE之前)
回聲!一!只是顯示!!! –
@SNash該集合無效,我很想念這個。現在已經糾正了。 – Julien
問題出現在a = %% n之前 –