einsteinxxl
Goto Top

Variable wird nicht gesetzt.

Ich möchte prüfen, ob einer Varibale schon einen Wert zugewiesen wurde und wenn nicht, diesen setzten.

Ich habe Folgendes Problem. Aus einer INI-Datei lese ich einen Pfad aus und schreibe ihn in die Variable %INSTALLDIR%. Wenn Dann in der INI-Datei kein Pfad angegeben ist, möchte ich einen Standardwert setzen.

// - INI-Datei auslesen
for /f "tokens=2 delims==" %%i in ('findstr /I "INSTALLDIR" settings.ini')  do set INSTALLDIR=%%i  

// - Variable zuweisen wenn nicht vohanden und Ausgabe des Ergebnis
if x%INSTALLDIR%x == xx (
    set INSTALLDIR="c:\Programme\myprog" <----- hier wird die variable irgendwie nicht gesetzt.   
    echo Keine Konfiguration gefunden. Standard wird verwendet. 
    echo INSTALLDIR: %INSTALLDIR% 
    echo.       
) else (
    echo Konfiguration gefunden und wird verwendet.
    echo INSTALLDIR: %INSTALLDIR% 
    echo. 
)

Hat jemand ne Ahnung was ich falsch machen?

Content-ID: 128132

Url: https://administrator.de/forum/variable-wird-nicht-gesetzt-128132.html

Ausgedruckt am: 22.04.2025 um 05:04 Uhr

Iwan
Iwan 28.10.2009 um 14:41:07 Uhr
Goto Top
hallo,

was machen die ganze x in Zeile 5 denn?
änder die mal ab auf:
if %INSTALLDIR% == "" (
Biber
Biber 28.10.2009 um 15:00:42 Uhr
Goto Top
Moin EinsteinXXL,

willkommen im Forum.

Dein Problem hängt an der optischen Täuschung, dass die eine Befehlszeile "IF () ..ELSE ()..)" rein optisch wie mehrere Zeilen wirkt.

In Wirklichkeit wird die Variable "%INSTALLDIR%" nur ein einziges Mal aufgelöst (das SET in Zeile 6 wird erst ab Zeile 15 wirksam).

Ändere es so:
// - INI-Datei auslesen
for /f "tokens=2 delims==" %%i in ('findstr /I "INSTALLDIR" settings.ini')  do set INSTALLDIR=%%i  

// - Variable zuweisen wenn nicht vohanden und Ausgabe des Ergebnis
if x%INSTALLDIR%x == xx (
    set INSTALLDIR="c:\Programme\myprog" <----- hier wird die variable irgendwie nicht gesetzt.   
    echo Keine Konfiguration gefunden. Standard wird verwendet.  
) else (
    echo Konfiguration gefunden und wird verwendet.
)
   echo INSTALLDIR: %INSTALLDIR% 
   echo.       

...und/oder lies dich ein ins Thema "DelayedExpansion" = verzögerte Variablenauflösung.

Grüße
Biber
bastla
bastla 28.10.2009 um 15:27:40 Uhr
Goto Top
Hallo EinsteinXXL und willkommen im Forum!

Nur kurz zum Thema "Ich möchte prüfen, ob einer Varibale schon ein Wert zugewiesen wurde":
if not defined INSTALLDIR set INSTALLDIR="c:\Programme\myprog"
Grüße
bastla
bastla
bastla 28.10.2009 um 15:32:35 Uhr
Goto Top
@Iwan
Eigentlich ist es egal, wie geprüft wird, ob %INSTALLDIR% genau Garnix enthält - wenn das der Fall ist, wird eben aus "x%INSTALLDIR%x" das abgefragte "xx" (allerdings gäbe es genau für diesen Zweck eine Abfrage per "if defined") ...

Grüße
bastla
EinsteinXXL
EinsteinXXL 19.11.2009 um 12:58:51 Uhr
Goto Top
Danke für eure Antworten. Hab das Problem jetzt mit "if not defined" gelöst.

mfg EinsteinXXL