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-ID: 253243

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

Ausgedruckt am: 14.11.2024 um 23:11 Uhr

SlainteMhath
Lösung SlainteMhath 28.10.2014 aktualisiert um 12:43:31 Uhr
Goto Top
Moin,

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

lg,
Slainte
ITvortex
ITvortex 28.10.2014 um 11:16:34 Uhr
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
13Stift37
13Stift37 28.10.2014 um 12:43:24 Uhr
Goto Top
Danke!
miniversum
miniversum 28.10.2014 um 12:50:24 Uhr
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ß