13stift37
Goto Top

Echo Ausgabe bei unzulässiger Netzwerkadresse

Hallöchen face-smile

Ich habe in meinem Batch einen befehl eingebaut welcher auf die Registry mehrer PC's zugreift und etwas ausließt.
Das Script funktioniert auch einwandfrei! Nun gehts nurnoch um das Design der Echo ausgaben.

Undzwar: Wenn der Computer der ausgelesen werden soll Offline ist, kommt folgende Nachricht Automatisch: "FEHLER: Die Netzwerkadresse ist unzulässig!"
Wenn der Computer Online ist, wird nichts angezeigt und er macht seine For schleife bis zum ende fertig.

Jetzt meine Frage: Kann ich diese Fehlermeldung 'abfangen' und durch eine Individuelle Meldung ersetzen? wie z.B: "Der Computer %%a ist Offline!"
(%%a ist in dem falle der Pc Name der vorher schon als Variable existiert)

Ich habe es mit if ERRORLEVEL schon versucht, jedoch ist das Level immer 0. Egal ob der Pc online oder offline ist. Somit kein nutzen in dem falle :/


Danke und liebe grüße.

Content-Key: 253243

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

Printed on: April 23, 2024 at 09:04 o'clock

Member: SlainteMhath
Solution SlainteMhath Oct 28, 2014 updated at 11:43:31 (UTC)
Goto Top
Moin,

Du könntest den Online-Zustand des Zieles vorher mit ping überprüfen. Etwa wie hier bescrhieben.

lg,
Slainte
Member: ITvortex
ITvortex Oct 28, 2014 at 10:16:34 (UTC)
Goto Top
Hallo,

mit Powershell:
try
{
}
catch
{
return $_.Exception.Message
}

über batch brauchst gibt es kein try/catch also musst du eine if Abfrage machen ala: IF %ERRORLEVEL% ....

Liebe Grüße
ITvortex
Member: 13Stift37
13Stift37 Oct 28, 2014 at 11:43:24 (UTC)
Goto Top
Danke!
Member: miniversum
miniversum Oct 28, 2014 at 11:50:24 (UTC)
Goto Top
Hallo

da sich der Befehl ja anscheinend in einer FOR Schleife befindet führt ein Abfragen von %errorlevel% immer zum gleicher Wert, da die Auflösunf der Variablen nicht innerhalb des Verarbeitungsblocks stattfindet, sondern erst danach.
Du kannst entweder
1. enabledelayedexpansion verwenden
oder
2. Die IP erst mit ping abprüfen und dann darauf mit einem && reagieren statt mit %errorlevel% (z.B. ping 1.2.3.4 >NUL 2>NUL && echo da
oder
3. Du machst einen call auf eine Sprungmarke, übergibst dort dann die IP adresse und kansnt dort dann ohne die Beschränkungen leben.
for %%a .... do call:verarb %%a
...
goto:eof

:verarb
set IP=%%a
...
goto:eof

Gruß