donnys73lb
Goto Top

Batchdatei: Variablen-Wertezuweisung

Hallole,

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

Content-ID: 306379

Url: https://administrator.de/contentid/306379

Ausgedruckt am: 25.11.2024 um 11:11 Uhr

129413
Lösung 129413 07.06.2016 aktualisiert um 13:31:12 Uhr
Goto Top
Delayed Expansion
@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)
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
donnyS73lb
donnyS73lb 10.06.2016 um 07:17:10 Uhr
Goto Top
Hallo Skybird,

es geht. Danke Dir!

Gruß

Donny