変数を含む変数をすぐにではなく、要求されたときにのみ処理できるかどうかを知りたいです。たとえば、次のバッチ:
@echo off
setlocal EnableDelayedExpansion
set VA=Two
set VAR=!VA! people
set VA=Three
ECHO !VAR!
「2 人」と出力されます。エコーを使用して最後にのみ解析を実行し、「3 人」を出力することは可能ですか?
答え1
それは不可能です。変数に値が割り当てられると、その値は割り当て時に使用された変数やテキストに依存しなくなります。
希望する出力を得るための最も簡単な方法は、VA 変数と最後にテキストをエコーするだけです。基本的には、すべての計算を実行し、最後に出力をまとめます。
@echo off
setlocal EnableDelayedExpansion
set VA=Two
set VA=Three
ECHO !VA! people
pause
答え2
最後にもう一度 VAR を設定するだけです。変数を設定できる回数に制限はありません。
覚えておいてください、バッチ ファイルは、コマンド プロンプトに入力できるコマンドのリストにすぎません。基本的に、各行は、時系列順に一度に 1 つのコマンドを実行します。
したがって、適切な条件で 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と同じである