Eine Variable in einem String nicht sofort im Batch-Skript verarbeiten

Eine Variable in einem String nicht sofort im Batch-Skript verarbeiten

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

verwandte Informationen