enriqe
Goto Top

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

Content-ID: 167772

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

Ausgedruckt am: 15.11.2024 um 16:11 Uhr

Tommy70
Tommy70 09.06.2011 um 11:07:48 Uhr
Goto Top
Hallo,

was ist, wenn du einfach prüfst ob in deiner Variable etwas drinnen steht? Ist sie Leer dann soll die Meldung kommen.
HGGIGO
HGGIGO 09.06.2011 um 11:18:16 Uhr
Goto Top
Syntax:

IF DEFINED Variable Befehl

bsp:

"if defined grp echo ja"

sollte so funzen!
Skyemugen
Skyemugen 09.06.2011 um 11:56:44 Uhr
Goto Top
Aloha,

wobei hier von der Funktionalität wohl genau das Gegenstück
if not defined grp goto :Alle
eingesetzt werden sollte, da er ja eher wissen will, welche Variable nicht gesetzt ist.

Um jetzt herauszufinden bei welchen PCs / Usern die Variable noch nicht gesetzt ist,

greetz André

P.S.: Was bitte ist funzen?
HGGIGO
HGGIGO 09.06.2011 um 12:16:52 Uhr
Goto Top
funktionieren...


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))

oder so in der art.
Enriqe
Enriqe 09.06.2011 um 12:49:08 Uhr
Goto Top
Hallo Tommy,

vielen Dank für Deine schnelle Antwort. Ich habe mich für den Vorschlag von HGGIGO entschieden, da das genau das war was ich gesucht habe. Aber trotzdem einmal interessehalber: Wenn die Variable nicht vorhanden ist und ich prüfe ob was drin steht,
bekomme ich einen Fehler zurück, den ich auswerten kann? Vorher war es so, dass die Ausführung des Scriptes bei all denen abgebrochen wurde, welche die Variable nicht hatten. Deswegen die Abfrage nach der Existenz der Variablen. Bei allen die die Variable hatten, wurde sie auch korrekt ausgewertet. Also, wenn eine Variable ohne Wert einer nicht vorhandenen Variable gleichkäme, dann wäre auch Dein Vorschlag interessant. Kannst Du mir das beantworten???
Ich danke Dir

Gruß
Enriqe
Enriqe
Enriqe 09.06.2011 um 12:55:29 Uhr
Goto Top
Hallo HGGIGO

vielen Dank - es geht face-smile
Das war genau das, was ich gesucht habe.
Volltreffer

Gruß
Enriqe
Skyemugen
Skyemugen 09.06.2011 um 13:01:30 Uhr
Goto Top
Aloha,

Zitat von @Enriqe:
Also, wenn eine Variable ohne Wert einer nicht vorhandenen Variable gleichkäme

dann wäre
set "datei="  
if "%grp%"=="%datei%" echo OK  
E:\Skripte>set "datei="

E:\Skripte>if "" == "" echo OK
OK


greetz André
Skyemugen
Skyemugen 09.06.2011 um 13:02:51 Uhr
Goto Top
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))

Wenn goto keine schöne Art ist, dann möchte ich auch lieber exit /b oder goto :eof statt exit verwenden face-wink

greetz André
HGGIGO
HGGIGO 09.06.2011 um 13:13:29 Uhr
Goto Top
Du hast ja recht face-wink @Skyemugen


@Enriqe setzt du die Frage auf gelöst! Bitte
bastla
bastla 09.06.2011 um 14:20:27 Uhr
Goto Top
@HGGIGO
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
Enriqe
Enriqe 14.06.2011 um 12:46:12 Uhr
Goto Top
mach ich,

sorry vergessen

face-smile