Existenz von Variablen in Batchdateien abfragen
Hallo Leute,
ich schlage mich wieder einmal mit einem lästigen Problem herum, von dem ich mir nicht vorstellen kann, dass es schwer zu lösen ist. Ich finde die Lösung aber leider selbst nicht heraus.
Ich werde mal schildern:
Seit einiger Zeit setzte ich für alle unsere User eine Variable, um damit deren Gruppenzugehörigkeit im Anmelescript (Batchdatei) zu ermitteln. Bei den Usern / PCs bei denen die Variable vorhanden ist, funktioniert das auch.
Um jetzt herauszufinden bei welchen PCs / Usern die Variable noch nicht gesetzt ist, habe ich eine Meldung "Meldung.vbs" programmiert, welche aufgehen soll wenn die Variale nicht vorhanden ist. Somit könnten sich diese User bei mir melden und ich könnte gezielt die restlichen Variablen setzten. Das würde mir den Weg zu ca. 100 PCs ersparen.
Jetzt zum Problem:
Ich kann nicht herausfinden wie ich in meiner batchdatei die Existenz der Variablen abfragen kann.
Mein letzter Versuch sieht so aus (s. unten), wobei "Grp" der NAME der Variablen ist und nicht deren Wert. Ohne "" und %% habe ich auch schon probiert aber unabhängig davon ob die Variable existiert oder nicht, Es erscheint immer die Meldung.
Ich denke aus diesen Sciptauszug ist erkennbar, was ich erreichen möchte.
Ich bedanke mich im Vorau schon einmal für alle hoffentlich eintreffenden Lsungsansätze.
Gruß
Enriqe
if exist "%Grp%" goto Alle
call Meldung.vbs
goto Alle
:Alle
ich schlage mich wieder einmal mit einem lästigen Problem herum, von dem ich mir nicht vorstellen kann, dass es schwer zu lösen ist. Ich finde die Lösung aber leider selbst nicht heraus.
Ich werde mal schildern:
Seit einiger Zeit setzte ich für alle unsere User eine Variable, um damit deren Gruppenzugehörigkeit im Anmelescript (Batchdatei) zu ermitteln. Bei den Usern / PCs bei denen die Variable vorhanden ist, funktioniert das auch.
Um jetzt herauszufinden bei welchen PCs / Usern die Variable noch nicht gesetzt ist, habe ich eine Meldung "Meldung.vbs" programmiert, welche aufgehen soll wenn die Variale nicht vorhanden ist. Somit könnten sich diese User bei mir melden und ich könnte gezielt die restlichen Variablen setzten. Das würde mir den Weg zu ca. 100 PCs ersparen.
Jetzt zum Problem:
Ich kann nicht herausfinden wie ich in meiner batchdatei die Existenz der Variablen abfragen kann.
Mein letzter Versuch sieht so aus (s. unten), wobei "Grp" der NAME der Variablen ist und nicht deren Wert. Ohne "" und %% habe ich auch schon probiert aber unabhängig davon ob die Variable existiert oder nicht, Es erscheint immer die Meldung.
Ich denke aus diesen Sciptauszug ist erkennbar, was ich erreichen möchte.
Ich bedanke mich im Vorau schon einmal für alle hoffentlich eintreffenden Lsungsansätze.
Gruß
Enriqe
if exist "%Grp%" goto Alle
call Meldung.vbs
goto Alle
:Alle
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 167772
Url: https://administrator.de/contentid/167772
Ausgedruckt am: 15.11.2024 um 16:11 Uhr
11 Kommentare
Neuester Kommentar
Aloha,
wobei hier von der Funktionalität wohl genau das Gegenstück
eingesetzt werden sollte, da er ja eher wissen will, welche Variable nicht gesetzt ist.
greetz André
P.S.: Was bitte ist funzen?
wobei hier von der Funktionalität wohl genau das Gegenstück
if not defined grp goto :Alle
Um jetzt herauszufinden bei welchen PCs / Usern die Variable noch nicht gesetzt ist,
greetz André
P.S.: Was bitte ist funzen?
Aloha,
dann wäre
greetz André
dann wäre
set "datei="
if "%grp%"=="%datei%" echo OK
E:\Skripte>set "datei="
E:\Skripte>if "" == "" echo OK
OK
greetz André
Zitat von @HGGIGO:
goto mag i net! Is keine schöne Art zu batchen, zumindest wenns mal länger wird!
> if defined grp (if errorlevel 0 (exit) else (call msg.vbs))
goto mag i net! Is keine schöne Art zu batchen, zumindest wenns mal länger wird!
> if defined grp (if errorlevel 0 (exit) else (call msg.vbs))
Wenn
goto
keine schöne Art ist, dann möchte ich auch lieber exit /b
oder goto :eof
statt exit
verwenden greetz André
@HGGIGO
Keine Frage der "Schönheit":
Grüße
bastla
Keine Frage der "Schönheit":
if errorlevel 0
verhindert in Deinem Beispiel konsequent (solange kein Errorlevel < 0 vorliegt) das Ausführen von "msg.vbs" (für das übrigens ein "call
" unnötig wäre) ...Grüße
bastla