Batchbefehle werden nicht vollständig ausgeführt
Hallo Leute,
ich möchte mittels Batch einen Ordner von einem Server auf ein NAS kopieren.
Dazu habe ich folgende Batchdatei geschrieben:
@echo off
net use x: /delete
net use x: \\IP-Adresse\sicherung\Unterordner
robocopy "D:\Test" "X:\" /mir /LOG:"D:\Backup.txt" /np
D:\Scripts\blat324\full\blat.exe -to adresse1@empfaenger1.de; adresse1@empfaenger2.de -f adresse2@empfaenger2.de -server mailserver.domain.local:25 -s "Backup" -body "Anbei das Logfile der letzten Sicherung" -attacht "D:\Backup.txt"
Leider wird der Robocopy-Befehl und der Mailversand nicht ausgeführt.
Kann mir jemand sagen, warum?
Dank euch im Voraus.
Gruß Manuel
ich möchte mittels Batch einen Ordner von einem Server auf ein NAS kopieren.
Dazu habe ich folgende Batchdatei geschrieben:
@echo off
net use x: /delete
net use x: \\IP-Adresse\sicherung\Unterordner
robocopy "D:\Test" "X:\" /mir /LOG:"D:\Backup.txt" /np
D:\Scripts\blat324\full\blat.exe -to adresse1@empfaenger1.de; adresse1@empfaenger2.de -f adresse2@empfaenger2.de -server mailserver.domain.local:25 -s "Backup" -body "Anbei das Logfile der letzten Sicherung" -attacht "D:\Backup.txt"
Leider wird der Robocopy-Befehl und der Mailversand nicht ausgeführt.
Kann mir jemand sagen, warum?
Dank euch im Voraus.
Gruß Manuel
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 273019
Url: https://administrator.de/forum/batchbefehle-werden-nicht-vollstaendig-ausgefuehrt-273019.html
Ausgedruckt am: 22.12.2024 um 15:12 Uhr
14 Kommentare
Neuester Kommentar
Hallo @manuel1985,
Schmeiß
u.U. musst du robocopy ein bisschen Zeit geben. Wird davor noch ein
Gruß,
@Snowman25
Schmeiß
Echo off
raus und überprüfe nach jedem Befehl den Errorlevel.u.U. musst du robocopy ein bisschen Zeit geben. Wird davor noch ein
ping localhost -n 2 >nul
. Das wartet 2 Sekunden.Gruß,
@Snowman25
Na was ist denn dann das Output des Batch-Files?
Kommt zumindest der Header von Robocopy?
Oder erscheint selbst das nicht? Ist X wirklich zugreiffbar?
u.U. solltest du auch zwischen
Gruß,
@Snowman25
Kommt zumindest der Header von Robocopy?
-------------------------------------------------------------------------------
ROBOCOPY :: Robustes Dateikopieren für Windows
-------------------------------------------------------------------------------
u.U. solltest du auch zwischen
net use X: /D
und net use X:
einen 2-sekündigen Schlaf setzen, wie vorhin beschrieben.Gruß,
@Snowman25
Moin,
also als erstes mal den Parameter /np weglassen damit der Status angezeigt wird. Und wenn du die Robocopy-Parameter /R für die Anzahl an Wiederholungen nicht angibst versucht Robocopy 1 Million mal den Vorgang auszuführen (mit Pause von 30 Sekunden zwischen den Wiederholungen) wenn es Probleme beim Kopieren gibt, und scheint dann für dich zu hängen wenn du die Ausgabe mit /np unterdrückst. Zusätzlich solltest du die Wartezeit für die Wiederholung mit dem Parameter W reduzieren.
Und wie gesagt wurde, eine kurze Pause vor dem Robocopy-Befehl einsetzen:
Also beispielsweise folgende Befehle nach dem mappen:
Welches OS und Robocopy-Version werden verwendet ?
Gruß jodel32
also als erstes mal den Parameter /np weglassen damit der Status angezeigt wird. Und wenn du die Robocopy-Parameter /R für die Anzahl an Wiederholungen nicht angibst versucht Robocopy 1 Million mal den Vorgang auszuführen (mit Pause von 30 Sekunden zwischen den Wiederholungen) wenn es Probleme beim Kopieren gibt, und scheint dann für dich zu hängen wenn du die Ausgabe mit /np unterdrückst. Zusätzlich solltest du die Wartezeit für die Wiederholung mit dem Parameter W reduzieren.
/R:n :: Anzahl von Wiederholungsversuchen bei fehlerhaften Kopiervorgängen. Der Standardwert ist 1 Million.
/W:n :: Wartezeit zwischen Wiederholungsversuchen. Der Standardwert ist 30 Sekunden.
Also beispielsweise folgende Befehle nach dem mappen:
timeout /t 1
robocopy "D:\Test" "X:" * /mir /LOG:"D:\Backup.txt" /R:5 /W:5
Gruß jodel32
Lass das Script doch mal in einer normalen CMD und nicht in einer Powershell-Konsole ausführen. Und bau den Befehl mal so auf wie ich oben geschrieben habe.
Zitat von @juergensteffe:
liegt die robocopy.exe auch in einem Verzeichnis, das im Path enthalten ist ?
Ansonsten mal in den gleichen Ordner kopieren, wo die Batch-Datei liegt.
Dann müsste er aber eigentlich sofort meckern ...Datei oder Programm nicht gefundenliegt die robocopy.exe auch in einem Verzeichnis, das im Path enthalten ist ?
Ansonsten mal in den gleichen Ordner kopieren, wo die Batch-Datei liegt.
Ich schätze das es mit der Ausführung in der Powershell-Konsole zu tun hat.
Gut möglich, dass Robocopy auf eine Art und Weise auf das Terminal schreibt, mit dem die PowerShell nicht zurechtkommt oder erst den Output anzeigt, wenn das Programm fertig abgelaufen ist.
Das könnte auch erklären, warum kein Robocopy-Prozess auftaucht: Weil dieser "anonym" unter dem Powershell-Prozess läuft.
Das könnte auch erklären, warum kein Robocopy-Prozess auftaucht: Weil dieser "anonym" unter dem Powershell-Prozess läuft.
Erscheint denn die Hilfe zu Robocopy, wenn du in der Console "robocopy /?" eingibst?
hast du mal getestet, Dateien mit Robocopy ohne Batch zu kopieren?
Wenn ja, wie war das Ergebnis?
Wenn nicht, erstell doch einfach mal zwei Testordner, wobei du einen mit Testdaten füllst und den zweiten leer lässt.
Anschließend gehst du hin un Kopierst die Testdaten in den zweiten Ordner. evtl. auch mal die Batch mit höheren Rechten ausführen.
hast du mal getestet, Dateien mit Robocopy ohne Batch zu kopieren?
Wenn ja, wie war das Ergebnis?
Wenn nicht, erstell doch einfach mal zwei Testordner, wobei du einen mit Testdaten füllst und den zweiten leer lässt.
Anschließend gehst du hin un Kopierst die Testdaten in den zweiten Ordner. evtl. auch mal die Batch mit höheren Rechten ausführen.