Mit Batch Netzwerkverbindung prüfen
Hallo Leute,
wie kann ich per Batch prüfen ob ein PC im Netzwerk zu erreichen ist bzw. ob bereits ein Netzlaufwerk zu diesem PC verbunden ist?
Es geht darum, dass mein kleines Batch-Programm Dateien zur Sicherung auf einen anderen PC kopieren soll, aber vorher prüfen soll, ob dieser PC überhaupt im Netzwerk verfügbar ist bzw. ob das Netzlaufwerk (auf das kopiert werden soll) bereits verbunden ist (sollte eig. standardmäßig verbunden sein).
Falls der PC nicht im Netz verfügbar ist, sollte eine Fehlermeldung in eine Log-Datei ausgegeben und das Programm beendet werden. Falls der PC verfügbar ist, das Netzlaufwerk aber (wieso auch immer) nicht verbunden ist, so soll dieses verbunden werden.
Danke für Eure Hilfe! Gruß
pemi
wie kann ich per Batch prüfen ob ein PC im Netzwerk zu erreichen ist bzw. ob bereits ein Netzlaufwerk zu diesem PC verbunden ist?
Es geht darum, dass mein kleines Batch-Programm Dateien zur Sicherung auf einen anderen PC kopieren soll, aber vorher prüfen soll, ob dieser PC überhaupt im Netzwerk verfügbar ist bzw. ob das Netzlaufwerk (auf das kopiert werden soll) bereits verbunden ist (sollte eig. standardmäßig verbunden sein).
Falls der PC nicht im Netz verfügbar ist, sollte eine Fehlermeldung in eine Log-Datei ausgegeben und das Programm beendet werden. Falls der PC verfügbar ist, das Netzlaufwerk aber (wieso auch immer) nicht verbunden ist, so soll dieses verbunden werden.
Danke für Eure Hilfe! Gruß
pemi
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 38296
Url: https://administrator.de/contentid/38296
Ausgedruckt am: 22.11.2024 um 12:11 Uhr
7 Kommentare
Neuester Kommentar
Hi,
hab Dir der Einfachheit halber mein Script (danke an Biber) reinkopiert.
Es sollte Deine Anforderungen erfüllen, bei mir startet es halt noch den Rechner per WOL, wenn dieser nicht läuft, statt dessen kannst Du eine log- Datei damit befüllen.
Hier das Script:
hab Dir der Einfachheit halber mein Script (danke an Biber) reinkopiert.
Es sollte Deine Anforderungen erfüllen, bei mir startet es halt noch den Rechner per WOL, wenn dieser nicht läuft, statt dessen kannst Du eine log- Datei damit befüllen.
Hier das Script:
@echo off
ping tonixp | find /i "Reply" && goto :nostart || goto :lanstart1
:nostart
rem net use z: /d
net use z: \\tonixp\sikoneu
xcopy /D /E /Y /C /H /F d:\*.* z:\
rem net use z: /d
exit
:lanstart1
D:\usage\Sikostart\LANStartCMD.exe 00-22-2E-41-6F-14
ping -n 40 tonixp | find /i "Reply" && goto :lanstart2 || goto :lanstart1
:lanstart2
ping -n 20 tonixp
net use z: /d
net use z: \\tonixp\sikoneu
xcopy /D /E /Y /C /H /F d:\*.* z:\
rem net use z: /d
D:\usage\Sikostart\shutdown -f -s -m \\tonixp
ping -n 10 tonixp
D:\usage\Sikostart\shutdown -f -s -m \\tonixp
ping -n 10 tonixp
D:\usage\Sikostart\shutdown -f -s -m \\tonixp
exit
Nachtrag:
(1) um zu prüfen, ob das Backup-Verzeichnis da ist, kann man ein dir auf den UNC-Namen machen. Im Fehlerfall schreibt man ins Log, dass der Rechner nicht da war
(2) Zum Kopieren von Daten braucht man das Remote-Verzeichnis nicht zu verbinden. Wenn man nur die Differenz der Verzeichnisse abgleichen will, sollte man Robcopy nehmen (ist imMS Ressource Kit - findet man aber auch so im Netz - Version 1.96 glaube ich).
Viele Grüsse
-= Axel =-
(1) um zu prüfen, ob das Backup-Verzeichnis da ist, kann man ein dir auf den UNC-Namen machen. Im Fehlerfall schreibt man ins Log, dass der Rechner nicht da war
(2) Zum Kopieren von Daten braucht man das Remote-Verzeichnis nicht zu verbinden. Wenn man nur die Differenz der Verzeichnisse abgleichen will, sollte man Robcopy nehmen (ist imMS Ressource Kit - findet man aber auch so im Netz - Version 1.96 glaube ich).
Viele Grüsse
-= Axel =-
Moin pemi,
Zwei Fussnoten noch zu leknilk0815s Beispiel und Ping mit "Reply"/"Antwort"
1) Eigentlich reicht Dir ja vom Ping-Befehl die Rückmeldung: "Hat geklappt"/"Hat nicht geklappt".
Also würde auch im obigen Beispiel reichen
...das reicht vollkommen, und es ist völlig egal, ob in der Ping-Ausgabe "Antwort" oder "Reply" oder "Gottfried" steht.
2) Bevor Du es aber darauf verkürzt:
Bei einigen ausgelieferten Ping.exe-Versionen hat M$ offensichtlich ausnahmsweise auf die Qualitätssicherung verzichtet...
Da liefert die Ping.exe bei einem "Kann-Server-nicht-erreichen"-Fall den ErrorLevel 0 (=alles prima).
Also vorher einmal testen am Cmd-Prompt:
Du solltest, wenn Deine Ping.exe OK ist, EINE Ausgabe bekommen (Fall 2).
Falls nicht: Dann verwende die Ping-Find-Mimik, wie von Toni skizzert.
Gruß
Biber
P.S. Ich formatiere mal Toni's Code als code.
Zwei Fussnoten noch zu leknilk0815s Beispiel und Ping mit "Reply"/"Antwort"
1) Eigentlich reicht Dir ja vom Ping-Befehl die Rückmeldung: "Hat geklappt"/"Hat nicht geklappt".
Also würde auch im obigen Beispiel reichen
(ping tonixp >nul)|| goto :lanstart1
2) Bevor Du es aber darauf verkürzt:
Bei einigen ausgelieferten Ping.exe-Versionen hat M$ offensichtlich ausnahmsweise auf die Qualitätssicherung verzichtet...
Da liefert die Ping.exe bei einem "Kann-Server-nicht-erreichen"-Fall den ErrorLevel 0 (=alles prima).
Also vorher einmal testen am Cmd-Prompt:
(ping www.web.de>nul) || echo www.web.de nicht erreicht
(ping www.diesenServerGibtEsNicht.de>nul) || echo www.diesenServerGibtEsNicht.de nicht erreicht
Falls nicht: Dann verwende die Ping-Find-Mimik, wie von Toni skizzert.
Gruß
Biber
P.S. Ich formatiere mal Toni's Code als code.
@Biber:
Danke für die Formatierung, nun sieht's ja fast schon professionell aus
(ich wollt halt nicht übertreiben...)
Gruß aus Tölz - Toni
Danke für die Formatierung, nun sieht's ja fast schon professionell aus
(ich wollt halt nicht übertreiben...)
Gruß aus Tölz - Toni