speedy4you
Goto Top

Anmeldeserver per batch ermitteln

%LOGONSERVER% => Der Befehl "Anmeldeserver" ist entweder falsch geschrieben oder konnte nicht gefunden werden.

Hallo zusammen,
ich möchte per batch den Logonserver ermitteln, sollte eigentlich nicht schwer sein. Meine Rechner sind XP und W2K Clients.
Bei meinem Script bekomme ich aber immer eine Fehlermeldung:

"Der Befehl "Anmeldeserver" ist entweder falsch geschrieben oder konnte nicht gefunden werden"

Hier mein code:

if %LOGONSERVER% == "\\ServerA" goto ServerA
if %LOGONSERVER% == "\\ServerB" goto ServerB

:ServerA
Anmeldeserver ist ServerA
goto ENDE

:ServerB
Anmeldeserver ist ServerB
goto ENDE

:ENDE

Besten Dank schon einmal im voraus

Content-ID: 115764

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

Ausgedruckt am: 22.11.2024 um 12:11 Uhr

manuel-r
manuel-r 11.05.2009 um 13:23:51 Uhr
Goto Top
Ist doch logisch. Den Befehl Anmeldeserver gibt es ja auch nicht. Entweder kommentierst du die Zeile aus mit
rem Anmeldeserver ist Server A
oder wenn du es an der Console ausgeben willst benutzt du
echo Anmeldeserver ist Server A
Manuel
Biber
Biber 11.05.2009 um 13:25:33 Uhr
Goto Top
Moin speedy4you,

bitte Code in Code-Tags posten und nicht im Voraus danken.

Versuch es so.
@echo off & setlocal
FOR  %%i in (serverA serverB) do (
        IF /i "%LOGONServer%" =="%%i" Set "FoundServer=%%i"  
)
IF "%FoundServer%"=="" (   
        echo Fehler... NixGefunden
) ELSE (
       Echo Anmeldeserver ist %FoundServer%
)
Pause 

Wesentliche Unterschiede.
  • SETLOCAL gesetzt, damit Du auch mit deinen Privat-Variablen arbeiten kannst
  • Beim IF-Vergleich Suchworte links und rechts der "=="-zeichen in Anführungszeichen gesetzt. Zusätzlich IF-Schalter /i .
  • beide Fälle behandeln: "Server gefunden" und "Server nicht gefunden".

Grüße
Biber
speedy4you
speedy4you 11.05.2009 um 13:54:01 Uhr
Goto Top
Das Script ist erst mal nur ein Test/Beispiel!
"Anmeldeserver ist ServerA " wird hinterher durch etwas anderes ersetzt.

Wir habe mehrer Server im Netzwerk, je nach Anmeldeserver sollen unterschiedliche Befehle (Batchdateien) abgearbeitet werden.

Wenn der Anmeldeserver z.B. ServerA ist soll die Batchdatei-A ausgeführt werden und wenn es ServerB ist soll die Batchdatei-B ausgeführt werden.

Wie muss ich denn
FOR %%i in (serverA serverB) do ( 03. IF /i "%LOGONServer%" =="%%i" Set "FoundServer=%%i"
anpassen?
Biber
Biber 11.05.2009 um 14:11:40 Uhr
Goto Top
Moin speedy4you,

nochmal -vielleicht hab ich es nicht richtig rübergebracht:

Die FOR-Konstruktion mit ALLEN erlaubten/geprüften Servernamen habe ich nur eingebaut, damit sich wenigstens der grundsätzliche Fall "gefunden/nichts gefunden" halbwegs pflegbar abbilden lässt.

Für die Fälle, in denen es ein NICHT-"nicht gefunden"-Fall, also einer der 2, 5 oder 12 namentlich bekannten Server ist...
-->dann kannst Du ja durchaus wie Du es geplant hattest zu einer Sprungmarke :ServerX, :ServerY, :ServerZ gehen.

Wenn Du nochmal meine drei "wesentlichen" Änderungen oben anschaust - da steht nichts davon, dass ich diese FOR-Anweisung für wesentlich oder entscheidend halte.
Das war nur, weil es in KEINEM Batch-Ablauf mehrere baugleiche Copy&Paste-Zeilen nach diesem Muster geben müssen sollte:

if %LOGONSERVER% == "\\ServerA" goto ServerA
if %LOGONSERVER% == "\\ServerB" goto ServerB
if %LOGONSERVER% == "\\ServerZ" goto ServerZ


Grüße
Biber