10
@echo off
SET first=0
FOR %%N IN (hello bye) DO (
SET first=1
echo %first%
echo %%N
)
看來變量「first」始終是0.爲什麼?爲什麼這個批處理變量即使設置也不會改變?
@echo off
SET first=0
FOR %%N IN (hello bye) DO (
SET first=1
echo %first%
echo %%N
)
看來變量「first」始終是0.爲什麼?爲什麼這個批處理變量即使設置也不會改變?
使用批處理文件時,讀取命令時會擴展變量 - 因此只要執行for
即可。在那一點上,它不再說echo %first%
,它實際上說echo 0
,因爲這是在擴張點的價值。
爲了解決這個問題,你需要用!
而不是%
來包圍變量名稱來使用延遲擴展 - 這樣的話就是echo !first!
。這可能要求您使用/ V參數啓動cmd.exe,或者在批處理文件的開頭(在echo off
之後)使用setlocal enabledelayedexpansion
。
如果你輸入set /?
,你會在輸出結尾看到更詳細的解釋。
可能重複的[Windows批處理變量不會設置](https://stackoverflow.com/questions/9681863/windows-batch-variables-wont-set) – 2018-03-11 01:24:47