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.
Hat jemand ne Ahnung was ich falsch machen?
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?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 128132
Url: https://administrator.de/forum/variable-wird-nicht-gesetzt-128132.html
Ausgedruckt am: 22.04.2025 um 05:04 Uhr
5 Kommentare
Neuester Kommentar
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:
...und/oder lies dich ein ins Thema "DelayedExpansion" = verzögerte Variablenauflösung.
Grüße
Biber
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
@Iwan
Eigentlich ist es egal, wie geprüft wird, ob %INSTALLDIR% genau Garnix enthält - wenn das der Fall ist, wird eben aus "
Grüße
bastla
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