Frage zu einer Batch: Warten auf Netzwerk bereit
Hallo zusammen,
ich habe eine batch geschrieben die mit Robocopy einen Ordner auf ein Ziel System kopiert.
Meine Frage ist, gibt es einen Befehl oder eine Möglichkeit vorher zu prüfen ob das Netzwerk bereit ist
(was mitunter 5 min dauern kann) und dann wenn´s bereit ist die Aktion mit Robocopy zu starten..´
Ich habe hier im Forum einen Beitrag gelesen der von leknilk0815 beantwortet wurde..
diesen hier meine ich Mit Batch Netzwerkverbindung prüfen
vielleicht gibt´s ja eine Möglichkeit den code zu modifizieren ..
Vielen Dank vorab.
Stefan
ich habe eine batch geschrieben die mit Robocopy einen Ordner auf ein Ziel System kopiert.
Meine Frage ist, gibt es einen Befehl oder eine Möglichkeit vorher zu prüfen ob das Netzwerk bereit ist
(was mitunter 5 min dauern kann) und dann wenn´s bereit ist die Aktion mit Robocopy zu starten..´
Ich habe hier im Forum einen Beitrag gelesen der von leknilk0815 beantwortet wurde..
diesen hier meine ich Mit Batch Netzwerkverbindung prüfen
vielleicht gibt´s ja eine Möglichkeit den code zu modifizieren ..
Vielen Dank vorab.
Stefan
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 7448124667
Url: https://administrator.de/contentid/7448124667
Ausgedruckt am: 25.11.2024 um 11:11 Uhr
11 Kommentare
Neuester Kommentar
Moin
Bin zwar nicht Hubert, aber nein:
Durch Timeout wartet das Skript 20 Sekunden, bevor er prüft ob das Share vorhanden ist. Ist das nicht der Fall, geht es wieder von vorne los, also wieder 20 Sekunden warten. Das wiederholt sich bis das Share erreichbar ist.
Mittwochsfrage: Wieso nicht einfach mal einen unbekannten Befehl, in dem Fall offenbar timeout, nachschalgen?
Gruß
Doskias
Zitat von @stevie72:
Hallo Hubert N.
daran hatte ich auch schon gedacht timeout zu verwenden ..
dein Skript versucht 20 sek ein Ziel zu verifizieren wenn nicht verfügbar wieder von vorn andernfalls weiter mit robocopy richtig?
Hallo Hubert N.
daran hatte ich auch schon gedacht timeout zu verwenden ..
dein Skript versucht 20 sek ein Ziel zu verifizieren wenn nicht verfügbar wieder von vorn andernfalls weiter mit robocopy richtig?
Bin zwar nicht Hubert, aber nein:
Durch Timeout wartet das Skript 20 Sekunden, bevor er prüft ob das Share vorhanden ist. Ist das nicht der Fall, geht es wieder von vorne los, also wieder 20 Sekunden warten. Das wiederholt sich bis das Share erreichbar ist.
Mittwochsfrage: Wieso nicht einfach mal einen unbekannten Befehl, in dem Fall offenbar timeout, nachschalgen?
Gruß
Doskias
Zitat von @stevie72:
Hallo Hubert N.
daran hatte ich auch schon gedacht timeout zu verwenden ..
dein Skript versucht 20 sek ein Ziel zu verifizieren wenn nicht verfügbar wieder von vorn andernfalls weiter mit robocopy richtig?
Grüße
Hallo Hubert N.
daran hatte ich auch schon gedacht timeout zu verwenden ..
dein Skript versucht 20 sek ein Ziel zu verifizieren wenn nicht verfügbar wieder von vorn andernfalls weiter mit robocopy richtig?
Grüße
Nein... Es wird alle 20 Sekunden geprüft, ob das Ziel erreichbar ist.
Aber mit einem Ping gehts natürlich auch
Gruß
Zitat von @KowaKowalski:
Hi Stefan,
lass erst nen ping los und mach weiter wenn er antwortet.
mfg
kowa
Hi Stefan,
lass erst nen ping los und mach weiter wenn er antwortet.
ping -n 1 -w 200 192.168.0.103 >nul
if ERRORLEVEL 1 goto ENDE
rem ... hier die net use Anmeldung ...
:ENDE
mfg
kowa
Das Ping ohne find oder findstr keine zuverlässigen Errorlevel zurückliefert ist auch schon Jahrzehnte alt ....
https://stackoverflow.com/questions/9329749/batch-errorlevel-ping-respon ...
Ich würde ja stattdessen gleich auf Powershell umsteigen,
wenn du bei Batch bleiben willst sprachunabhängig bspw. direkt über WMI
while(!(Test-Connection X.X.X.X -Quiet -Count 1)){sleep 1}
# whatever comes next
wenn du bei Batch bleiben willst sprachunabhängig bspw. direkt über WMI
@echo off
set host=X.X.X.X
:start
echo Checking host ...
for /f "tokens=2 delims==" %%a in ('wmic path win32_PingStatus where ^(Address ^= "%host%"^) get statuscode /value') do set status=%%a
if "%status%" == "0" (echo Host %host% is online) else (timeout /t 1 >nul &goto :start)
echo Now do what you want
pause