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-Key: 306379

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

Printed on: April 19, 2024 at 06:04 o'clock

Mitglied: 129413
Solution 129413 Jun 07, 2016 updated at 11:31:12 (UTC)
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
Member: donnyS73lb
donnyS73lb Jun 10, 2016 at 05:17:10 (UTC)
Goto Top
Hallo Skybird,

es geht. Danke Dir!

Gruß

Donny