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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 306379
Url: https://administrator.de/contentid/306379
Ausgedruckt am: 25.11.2024 um 11:11 Uhr
2 Kommentare
Neuester Kommentar
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