不立即在批次腳本中處理字串中的變數

不立即在批次腳本中處理字串中的變數

我想知道是否可以不立即處理包含變數的變量,而是在被要求時才處理。例如這批:

 @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 相同

相關內容