olliwest
Goto Top

innerhalb eines IF-Blocks Neusetzen einer Variable

hallo zusammen,

ich habe ein Problem, und zwar funktioniert das setzten einer Variable innerhalb einer IF-Anweisung nicht nur außerhalb.

Code:

@if exist c:\test.txt (
@set /p user=<c:\test.txt
@echo %user% User angemeldet
@del c:\test.txt
exit 0 )

@if exist c:\test2.txt (
@set /p user=<c:\test2.txt
@echo %user% User angemeldet
@del c:\test2.txt
exit 0 )

ich habe es auch schon mit, @echo !user! User angemeldet,
ausprobiert, funktioniert auch nicht.

kann mir da jemand weiterhelfen, danke

gruß olli

Content-Key: 88595

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

Printed on: April 18, 2024 at 12:04 o'clock

Member: bastla
bastla May 28, 2008 at 08:46:21 (UTC)
Goto Top
Hallo olliwest und willkommen im Forum!

... funktioniert das setzten einer Variable innerhalb einer IF-Anweisung nicht
Setzen kannst Du die Variable, aber den gesetzten Wert kannst Du innerhalb des IF nur über "delayedExpansion" auslesen - daher:
@echo off & setlocal enabledelayedexpansion
if exist c:\test.txt (
    set /p user=<c:\test.txt
    echo !user! User angemeldet
    del c:\test.txt
    exit 0
) 
Dadurch ändert sich auch die Variablenschreibweise auf !Variable!.

Als Alternative dazu könntest Du einfach den entsprechenden Teil überspringen oder ein Unterprogramm verwenden - ersteres etwa so:
@echo off & setlocal
if not exist c:\test.txt goto :NichtDa
set /p user=<c:\test.txt
echo %user% User angemeldet
del c:\test.txt
exit 0

:NichtDa
echo Die Datei "c:\test.txt" wurde nicht gefunden.  

Grüße
bastla
Member: olliwest
olliwest May 28, 2008 at 09:14:30 (UTC)
Goto Top
Hi bastla,

vielen Dank für die schnelle Antwort.
Es funktioniert wunderbar, danke.

Gruß Olli