Batchdatei: Variablen-Wertezuweisung
Hallole,
eine Anfängerfrage: Was mache ich hier falsch?
echo %variable1% liefert das richtige Ergebnis, denn variable1 hat einen gültigen Wert. Diesen möchte ich an variable2 übergeben. Funktioniert leider nicht.
Wie müsste das richtig aussehen?
Gruß
Donny
eine Anfängerfrage: Was mache ich hier falsch?
if defined variable1 (
echo %variable1%
set variable2=%variable1%
echo 123
echo %variable2% blabla
) else (
echo blubbblubb
)
echo %variable1% liefert das richtige Ergebnis, denn variable1 hat einen gültigen Wert. Diesen möchte ich an variable2 übergeben. Funktioniert leider nicht.
Wie müsste das richtig aussehen?
Gruß
Donny
Please also mark the comments that contributed to the solution of the article
Content-Key: 306379
Url: https://administrator.de/contentid/306379
Printed on: April 19, 2024 at 06:04 o'clock
2 Comments
Latest comment
Delayed Expansion
Die Zeilen innerhalb der Klammern werden als eine beim parsen so expandiert (Quasi als eine einzelne Zeile gesehen und die Variablen expandiert wenn man kein DelayedExpansion nutzt)
Man sieht also das %variable2% zu einem leeren Wert expandiert wird weil sie für den Interpreter noch nicht existiert.
Hingegen bei aktiviertem DelayedExpansion wird die Zeile beim Ausführen der Zeilen erneut ausgewertet und das !variable2! dann zum korrekten Wert expandiert.
Gruß Skybird
@echo off
setlocal Enabledelayedexpansion
if defined variable1 (
echo %variable1%
set "variable2=%variable1%"
echo !variable2! blabla
) else (
echo blubbblubb
)
Die Zeilen innerhalb der Klammern werden als eine beim parsen so expandiert (Quasi als eine einzelne Zeile gesehen und die Variablen expandiert wenn man kein DelayedExpansion nutzt)
set variable1=Test
if defined variable1 (echo Test &set "variable2=Test" &echo)
Hingegen bei aktiviertem DelayedExpansion wird die Zeile beim Ausführen der Zeilen erneut ausgewertet und das !variable2! dann zum korrekten Wert expandiert.
Gruß Skybird