Ich möchte wissen, ob es möglich ist, eine Variable, die eine Variable enthält, nicht sofort, sondern nur auf Anfrage zu verarbeiten. Zum Beispiel dieser Stapel:
@echo off
setlocal EnableDelayedExpansion
set VA=Two
set VAR=!VA! people
set VA=Three
ECHO !VAR!
Gibt "Zwei Personen" aus. Ist es möglich, das Parsen erst am Ende mit dem Echo durchzuführen, um als Ausgabe "Drei Personen" zu erhalten?
Antwort1
Das wird nicht möglich sein. Sobald einer Variablen ein Wert zugewiesen wurde, ist sie nicht mehr von der Variable oder dem Text abhängig, der bei der Zuweisung verwendet wurde.
Der einfachste Weg, die gewünschte Ausgabe zu erhalten, besteht darin, einfach die VA-Variable und den Text am Ende wiederzugeben. Führen Sie im Grunde alle Ihre Berechnungen durch und stellen Sie dann am Ende Ihre Ausgabe zusammen.
@echo off
setlocal EnableDelayedExpansion
set VA=Two
set VA=Three
ECHO !VA! people
pause
Antwort2
Setzen Sie VAR einfach am Ende erneut. Es gibt keine Einschränkung, wie oft Sie eine Variable setzen können.
Denken Sie daran, dass eine Batchdatei nur eine Liste von Befehlen ist, die Sie in die Eingabeaufforderung eingeben können. Jede Zeile ist im Grunde ein Befehl, der in chronologischer Reihenfolge ausgeführt wird.
Wenn Sie also unter den richtigen Bedingungen einen erhöhten VAR benötigen, legen Sie ihn kurz vor diesem Moment fest. Beispiel:
@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
:: in einer Batchdatei ist dasselbe wie REM