batch file - ping before Copy

quakemarine1
Goto Top
hiho

ich kopiere über batch auf ca 100 rechner ab und zu dateien

for /L %X in (1,1,100) do copy c:\*.txt \\IP%X\c\

wenn einiger der zielrechner nicht vorhanden sind dauert das Kopieren extrem lange

ich suche einen weg ein ping vor dem kopieren zu senden und wenn der zielrechner nicht antwortet das kopieren zu überspringen

quasi
ping %X - wenn ok kopiere sonst nächstes


ps
skip existing files beim kopieren scheint es nicht zu geben ?

thx

Content-Key: 73949

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

Ausgedruckt am: 01.07.2022 um 21:07 Uhr

Mitglied: Biber
Biber 19.11.2007 um 21:00:38 Uhr
Goto Top
Moin Quakemarine1,

Du kannst auch mehrere CMD-Befehlen quasi hintereinanderschlalten, indem Du sie mit
  • && (wenn der vorangegangene Befehl erfolgreich war)
  • || (wenn der vorangegangene Befehl erfolglos war)
  • & (auf jeden Fall; sequentiell abarbeiten)
...verkettest.

In Deinem Fall hast Du dafür 2 beliebte Möglichkeiten

  • entweder ein [ping computer >nul && danach copy]
  • oder ein [ping computer|find "Erfolgstext">nul && und dann copy].

Der Weg 1 wäre logisch, wenn M$'s Ping.exe immer ein "Erfolgreich"/"In die Grütze" zurückgeben würde und dieses irgendwie mit der gewollten Aktion korrelieren würde.

Deshalb nimm lieber Weg 2.


Wenn Du nur die noch nicht vorhandenen Dateien kopieren willst, würde ich statt "Copy" irgendein aufgemotztes Copy (XCopy, RoboCopy,...) nehmen. Die können das.

Wenn Du es mit Copy machen willst, dann musst Du vor jeder einzelnen Datei ein "IF NOT EXIST \\IP%X\c\zieldatei" davorschalten.

Grüße
Biber
Mitglied: TuXHunt3R
TuXHunt3R 19.11.2007 um 21:10:52 Uhr
Goto Top
Du kannst auch folgende zwei Zeilen in die For-Schleife einfügen (so mach ichs immer):


Aber die Lösung von Biber ist natürlich etwas eleganter.....
Mitglied: QuakeMarine1
QuakeMarine1 20.11.2007 um 12:11:18 Uhr
Goto Top
thx





wir sind wörter um die 30 zeichen für eine antwort zu haben