我想知道是否可以不立即處理包含變數的變量,而是在被要求時才處理。例如這批:
@echo off
setlocal EnableDelayedExpansion
set VA=Two
set VAR=!VA! people
set VA=Three
ECHO !VAR!
列印“兩個人”。是否可以僅在最後使用 echo 進行解析以輸出“三人”?
答案1
那是不可能的。一旦為變數分配了值,它就不再依賴於分配時使用的變數或文字。
實現所需輸出的最簡單方法是簡單地回顯 VA 變數和末尾的文字。基本上,完成所有計算,然後最後將輸出放在一起。
@echo off
setlocal EnableDelayedExpansion
set VA=Two
set VA=Three
ECHO !VA! people
pause
答案2
最後再設定VAR就好了。設定變數的頻率沒有限制。
請記住,批次檔只是您可以在命令提示字元中鍵入的命令清單。每一行基本上都是一次按時間順序執行的一個命令。
因此,如果您需要在適當的條件下提高 VAR,請在該時刻之前進行設定。例子:
@echo off
setlocal EnableDelayedExpansion
set VA=Two
set VAR=%VA% people
echo %VAR%
set VA=Three
::We want to update VAR, so lets set it again:
set VAR=%VA% people
echo %VAR%
pause
:: 在批次檔中與 REM 相同