Robocopy im Batchlauf - Fehlermeldung - Der Befehl Robocopy ist entweder falsch geschrieben oder konnte nicht gefunden werden.
Einmal ein herzliches "Hallo" als Neuling und folgende Sache die mich nach meiner gestrigen 5 stündige (aussichtslosen) Fehlersuche schon zum verzweifeln bringt ...
Betriebssystem: Windows Vista 64-bit ... seit ca. 2 Wochen komplett neu installiert ... alle SP und Update aktuell ... installiert ist Vista, MS Office 2007, Winamp Player und ein paar kleine Toolprogramme. Sonst nichts aufregendes. Man fast sagen, das System ist noch (fast) jungfräulich. Keine Prb am Betriebssystem bekannt. Im Taskmeanger alles OK, auch hinsichtlich Performance. Im Systemmanager ebenfalls keine Vorkommnisse. Soweit so gut.
Nun zu meiner Problembeschreibung:
In einer Batchdatei kopiere (spiegle) ich mittels Robocopy ca. 50 GB persönliche Daten auf eine interne Festplatte. Das funkt auch Bestens. Zusätzlich aber sichere ich alle diese Daten auf eine externe Festplatte (My Book von Western Digital - 1,2TB) die eigentlich ein Archiv darstellt, welches unberührt bleibt und als Backup für doch gelöschte Dinge auf den internen Festplatten (der Robocopy Spiegelung) dienen sollte.
Nun zu der Batchdatei <ACF_Test (ArchivCopyFile> ... die Ablaufschritte sind folgende:
... Variablenbefüllung (getdate) für den Teil des Headers ...
... Variablenbefüllung (gettime) für den Teil des Headers ...
... Variablenbefüllung (ACF_%getdate%) welches den Namen des Archiv-Verzeichnisses mit dem Tagesdatum darstellen soll ...
... :RENAMELOG ... hier soll das alte LOG File mit dem Tagesdatum in einen Archiv-Ordner verschoben werden ...
... :HEADER ... hier wird für das LOG File das Tagesdatum mit der Uhrzeit und namentlich der Inhalt des Logs festgehalten ...
... :CREATEARCHIV ... hier wird das Archiv erstellt, bei vorhanden sein gelöscht, andernfalls erstellt ...
... :ARCHIVFILECOPY ... hier wird dann mittels mehrerer ROBOCOPY Befehle die benötigten Daten-Verzeichnisse gesichert ...
... :ERRORxxxxxx ... diverse ErrorLevel Tätigkeiten ...
... :ENDE ... hier werden noch diverse persönliche Infos hinzugefügt und fertig ...
Die Batch soll 1x im Monat laufen ... zu jedem Unterprogramm gibt es eine ERRORLEVEL-Abfrage und dementsprechend wird in einem ERROR-Teil verzweigt ... Soweit so gut ... verzeiht mir hier das Ausschweifen aber möchte einmal das Prinzip des Batches darstellen ...
DAS PROBLEM ist nun, dass bei dem Robocopy-Teil die Meldung kommt >>> Der Befehl "Robocopy" ist entweder falsch geschrieben oder konnte nicht gefunden werden. <<<
Was habe ich alles probiert:
-- div Test mit Administrator Einstellung ... kein Erfolg ...
-- Copy/Paste in ein neues Batch File ... kein Erfolg ...
-- diverse Ordner- und Fileberechtigungsänderungen ... kein Erfolg ...
-- die Batch verknüpft und den Wert "als Administrator ausführen ..." gesetzt ... kein Erfolg ...
-- stundenlanges Lesen in div Google-Vorkommnisse und anschließende Tests ... kein Erfolg ...
Dazwischen aber immer wieder den Urzustand hergestellt ... WENN man jedoch NUR den ROBOCOPY-Befehl als "Einzeiler" in einer NEUEN BATCH kopiert und diese ausführt, dann funkt es tadellos ... ebenso wenn man ein CMD-Fenster öffnet und mittels Copy/Paste diesen Einzeiler dort einfügt, detto ... alles funkt bussifein ...
NUR in der Batch NICHT ... seltsam, seltsam ... all meine anderen Batchfiles laufen aber einwandfrei ... denke aber das es sich hierbei um ein (auf einmal auftauchendes) Berechtigungsproblem handelt ... Benutzkontosteuerung ist ausgeschaltet ... Benutzerprofil wird als "Administrator" angezeigt ...
Da ich eures Forum seit ca. 2 Wochen täglich als "Hintergrund-Leser" sehr, sehr schätze, habe ich nun mein beschriebens Problem zum Anlass genommen, mich A) zu registrieren und B) mich nun an Euch zu wenden.
Ich hoffe wir können das Problem lösen, denn nicht nur die Batch ist mit einiger Arbeit geschrieben sondern ich möchte diese auch nicht aufgeben.
Was übersehe ich hier wirklich ???
Als dann, liebe Grüße von meiner Seite und ein Dankeschön im voraus,
Andreas
Betriebssystem: Windows Vista 64-bit ... seit ca. 2 Wochen komplett neu installiert ... alle SP und Update aktuell ... installiert ist Vista, MS Office 2007, Winamp Player und ein paar kleine Toolprogramme. Sonst nichts aufregendes. Man fast sagen, das System ist noch (fast) jungfräulich. Keine Prb am Betriebssystem bekannt. Im Taskmeanger alles OK, auch hinsichtlich Performance. Im Systemmanager ebenfalls keine Vorkommnisse. Soweit so gut.
Nun zu meiner Problembeschreibung:
In einer Batchdatei kopiere (spiegle) ich mittels Robocopy ca. 50 GB persönliche Daten auf eine interne Festplatte. Das funkt auch Bestens. Zusätzlich aber sichere ich alle diese Daten auf eine externe Festplatte (My Book von Western Digital - 1,2TB) die eigentlich ein Archiv darstellt, welches unberührt bleibt und als Backup für doch gelöschte Dinge auf den internen Festplatten (der Robocopy Spiegelung) dienen sollte.
Nun zu der Batchdatei <ACF_Test (ArchivCopyFile> ... die Ablaufschritte sind folgende:
... Variablenbefüllung (getdate) für den Teil des Headers ...
... Variablenbefüllung (gettime) für den Teil des Headers ...
... Variablenbefüllung (ACF_%getdate%) welches den Namen des Archiv-Verzeichnisses mit dem Tagesdatum darstellen soll ...
... :RENAMELOG ... hier soll das alte LOG File mit dem Tagesdatum in einen Archiv-Ordner verschoben werden ...
... :HEADER ... hier wird für das LOG File das Tagesdatum mit der Uhrzeit und namentlich der Inhalt des Logs festgehalten ...
... :CREATEARCHIV ... hier wird das Archiv erstellt, bei vorhanden sein gelöscht, andernfalls erstellt ...
... :ARCHIVFILECOPY ... hier wird dann mittels mehrerer ROBOCOPY Befehle die benötigten Daten-Verzeichnisse gesichert ...
... :ERRORxxxxxx ... diverse ErrorLevel Tätigkeiten ...
... :ENDE ... hier werden noch diverse persönliche Infos hinzugefügt und fertig ...
Die Batch soll 1x im Monat laufen ... zu jedem Unterprogramm gibt es eine ERRORLEVEL-Abfrage und dementsprechend wird in einem ERROR-Teil verzweigt ... Soweit so gut ... verzeiht mir hier das Ausschweifen aber möchte einmal das Prinzip des Batches darstellen ...
DAS PROBLEM ist nun, dass bei dem Robocopy-Teil die Meldung kommt >>> Der Befehl "Robocopy" ist entweder falsch geschrieben oder konnte nicht gefunden werden. <<<
Was habe ich alles probiert:
-- div Test mit Administrator Einstellung ... kein Erfolg ...
-- Copy/Paste in ein neues Batch File ... kein Erfolg ...
-- diverse Ordner- und Fileberechtigungsänderungen ... kein Erfolg ...
-- die Batch verknüpft und den Wert "als Administrator ausführen ..." gesetzt ... kein Erfolg ...
-- stundenlanges Lesen in div Google-Vorkommnisse und anschließende Tests ... kein Erfolg ...
Dazwischen aber immer wieder den Urzustand hergestellt ... WENN man jedoch NUR den ROBOCOPY-Befehl als "Einzeiler" in einer NEUEN BATCH kopiert und diese ausführt, dann funkt es tadellos ... ebenso wenn man ein CMD-Fenster öffnet und mittels Copy/Paste diesen Einzeiler dort einfügt, detto ... alles funkt bussifein ...
NUR in der Batch NICHT ... seltsam, seltsam ... all meine anderen Batchfiles laufen aber einwandfrei ... denke aber das es sich hierbei um ein (auf einmal auftauchendes) Berechtigungsproblem handelt ... Benutzkontosteuerung ist ausgeschaltet ... Benutzerprofil wird als "Administrator" angezeigt ...
Da ich eures Forum seit ca. 2 Wochen täglich als "Hintergrund-Leser" sehr, sehr schätze, habe ich nun mein beschriebens Problem zum Anlass genommen, mich A) zu registrieren und B) mich nun an Euch zu wenden.
Ich hoffe wir können das Problem lösen, denn nicht nur die Batch ist mit einiger Arbeit geschrieben sondern ich möchte diese auch nicht aufgeben.
Was übersehe ich hier wirklich ???
Als dann, liebe Grüße von meiner Seite und ein Dankeschön im voraus,
Andreas
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 180045
Url: https://administrator.de/forum/robocopy-im-batchlauf-fehlermeldung-der-befehl-robocopy-ist-entweder-falsch-geschrieben-oder-konnte-nicht-180045.html
Ausgedruckt am: 05.04.2025 um 23:04 Uhr
17 Kommentare
Neuester Kommentar
Moin
in der Umgebungsvariable path wird sicher nicht .exe drin stehen. Was hat .exe mit einem Pfad zu tun ??
Da ist garnichts merkwürdiges dran. Alles, was in dieser Umgebungsvariable defriniert ist, findet das Betriebssystem auch ohne genaue Pfadangabe. Das ist der einzige Sinn dieser Sache...
Und weil das so ist, kopiert man die robocopy.exe eben immer ins System32-Verzeichnis und hat die Probleme dann nicht
Gruß
Hubert
in der Umgebungsvariable path wird sicher nicht .exe drin stehen. Was hat .exe mit einem Pfad zu tun ??
Da ist garnichts merkwürdiges dran. Alles, was in dieser Umgebungsvariable defriniert ist, findet das Betriebssystem auch ohne genaue Pfadangabe. Das ist der einzige Sinn dieser Sache...
Und weil das so ist, kopiert man die robocopy.exe eben immer ins System32-Verzeichnis und hat die Probleme dann nicht
Gruß
Hubert
Hallo IT-Hasi und willkommen im Forum!
Deine Zeile 16 ist etwas "optimistisch" - zumindest, wenn Du damit versuchen solltest, einen "Gesamt-Errorlevel" aller vorherigen "
Eine (einfache) Alternative könnte etwa so aussehen:
Grüße
bastla
Deine Zeile 16 ist etwas "optimistisch" - zumindest, wenn Du damit versuchen solltest, einen "Gesamt-Errorlevel" aller vorherigen "
xcopy
"-Vorgänge abzufragen - so wird nämlich nur der Errorlevel des letzten Kopiervorganges geprüft ...Eine (einfache) Alternative könnte etwa so aussehen:
set "Fehler="
for /f "delims=" %%b in ('dir /b "D:\___DATEN\---DOKUMENTE---"') do xcopy /E /Y /I "D:\___DATEN\---DOKUMENTE---\%%b\*.*" "S:\ARCHIV_FILE_COPY\AFC_20120203\---DOKUMENTE---\%%b" >> D:\___LOGS\COPYARCHIV\Copy_.log || set "Fehler=True"
if defined Fehler goto ERRFCDOKUMENTE
bastla
Meine Kenntnisse in Batch-Programmierung stammen noch aus der Zeit von DOS.
Kann also sein das ich nicht ganz up to Date bin....
Afaik:
Es ist nicht entscheidend aus welchem Verzeichnis heraus die .bat aufgerufend wird sondern in welchem Verzeichnis sich der Befehlsinterpreter zum Zeitpunkt des Unterprogrammaufrufs befindet.
Außerdem erinner ich mich das der Befehlsinterpreter sehr pingelich ist und sich gern mal verwirren lässt und Befehle anders interpretiert als gedacht.
Und da kann es leicht passieren das du plötzlich auf dem falschen Laufwerk landest.
Die Ausgabeumleitung " >> D:\___LOGS\COPYARCHIV\Copy_.log" kommt mir seltsam vor.
Zu DOS-Zeiten wurde eine Ausgabeumleitung nur mit einem ">" vorgenommen.
Kann also sein das ich nicht ganz up to Date bin....
Afaik:
Es ist nicht entscheidend aus welchem Verzeichnis heraus die .bat aufgerufend wird sondern in welchem Verzeichnis sich der Befehlsinterpreter zum Zeitpunkt des Unterprogrammaufrufs befindet.
Außerdem erinner ich mich das der Befehlsinterpreter sehr pingelich ist und sich gern mal verwirren lässt und Befehle anders interpretiert als gedacht.
Und da kann es leicht passieren das du plötzlich auf dem falschen Laufwerk landest.
Die Ausgabeumleitung " >> D:\___LOGS\COPYARCHIV\Copy_.log" kommt mir seltsam vor.
Zu DOS-Zeiten wurde eine Ausgabeumleitung nur mit einem ">" vorgenommen.
Hallo jens2001!
Grüße
bastla
Es ist nicht entscheidend aus welchem Verzeichnis heraus die .bat aufgerufend wird sondern in welchem Verzeichnis sich der Befehlsinterpreter zum Zeitpunkt des Unterprogrammaufrufs befindet.
Grundsätzlich ja - es geht einfach darum, die "exe" zu finden; wenn das nicht über "path
" geht, und sich die "exe" auch nicht im aktuellen Ordner befindet, muss der komplette Pfad angegeben werden, und dann hilft es, wenn sich die "exe" im Ordner der Batchdatei befindet, da deren Pfad eben per "%~dp0
" ermittelt werden kann.Die Ausgabeumleitung " >> D:\___LOGS\COPYARCHIV\Copy_.log" kommt mir seltsam vor.
Zu DOS-Zeiten wurde eine Ausgabeumleitung nur mit einem ">" vorgenommen.
Auch damals war es schon möglich, die Zieldatei nicht jedes Mal neu zu erstellen, sondern per "Zu DOS-Zeiten wurde eine Ausgabeumleitung nur mit einem ">" vorgenommen.
>>
" den neuen Text an die bestehende Datei anzufügen ...Grüße
bastla
Hallo IT-Hasi!

Oder nochmals deutlicher: Es ging mir darum, dass nach der Schleife nur der Errorlevel des letzten in der Schleife durchgeführten Vorganges verfügbar ist - wenn also beim zweiten von sechs Kopiervorgängen ein Errorlevel <> 0 zurückgegeben wurde, kann das Deine Zeile 16 nicht erkennen, weswegen ich vorgeschlagen hatte, nach jedem einzelnen "
Um das Ganze für "
Grüße
bastla
mag ja für das DOS/COPY/XCOPY funken ... jedoch ROBOCOPY hat im Errorlevel 0 + 1 für erfolgreiches kopieren (halt mit kleinen Abweichungen) ...
... und ich hatte das, was in Deiner Zeile 14 durch die Schleife mehrfach stattfindet (und von dem in Zeile 16 nur der Errorlevel des letzten Kopiervorganges geprüft werden kann) doch glatt für "xcopy
" gehalten ... Oder nochmals deutlicher: Es ging mir darum, dass nach der Schleife nur der Errorlevel des letzten in der Schleife durchgeführten Vorganges verfügbar ist - wenn also beim zweiten von sechs Kopiervorgängen ein Errorlevel <> 0 zurückgegeben wurde, kann das Deine Zeile 16 nicht erkennen, weswegen ich vorgeschlagen hatte, nach jedem einzelnen "
xcopy
" den Errorlevel zu prüfen, damit auch schon beim Auftreten eines einzigen Fehlers die Variable %Fehler% nicht mehr leer ist und nach der Schleife entsprechend reagiert werden kann.Um das Ganze für "
robocopy
" anzupassen, müsstest Du eben per "delayedexpansion
" jeweils noch in der Schleife "!errorlevel!
" mit einem "if
" abfragen oder "if errorlevel
" verwenden - dann aber darauf achten, dass damit auf "größer-gleich" getestet wird.Grüße
bastla
oder, etwas anders ausgedrückt, IT-Hasi,
du bist jetzt schon schon zum zweiten Mal darauf angesprochen worden, dass du zwar im Beitragstitel immer von Robocopy erzählst, aber in den geposteten Codefragmenten gar kein Robocopy-Aufruf zu sehen ist.
Falls dein Sichere-mit-Robocopy-Schnipsel eventuell noch bis zur endgültigen Prüfung durch Patentamt und/oder Nobelpreis-Komittee unter Verschluss gehalten werden muss - okay.
Ist ja auch eine ähnlich schützenswerte innovation wie es Fernsprecher zum Selbstwählen oder Empfangsgeräte für Tonfilme sind.
Aber wir können doch nur die eventuellen Sollbruchstellen finden, die du uns hier auch postest.
Poste den ganzen Schnipsel, dann können wir schon sagen "Ja nee, Zeile 17-24 werden eh nie erreicht weil wegen.." oder ähnliches.
Und mag ja sein, dass eine Errorlevel-Abfrage einer Serie von Robocopy-Läufen wenig Sinn macht, aber dann liegt ja dennoch das erzeugte Logfile vor, in dem nach den für dich interessanten Fehlertexten gesucht werden kann.
Die Redmonder ProaktikantInnen sind da genauso berechenbar wie ihre hiesigen Unterschleißpappenheimer - das finden wir dann also schon.
Grüße
Biber
du bist jetzt schon schon zum zweiten Mal darauf angesprochen worden, dass du zwar im Beitragstitel immer von Robocopy erzählst, aber in den geposteten Codefragmenten gar kein Robocopy-Aufruf zu sehen ist.
Falls dein Sichere-mit-Robocopy-Schnipsel eventuell noch bis zur endgültigen Prüfung durch Patentamt und/oder Nobelpreis-Komittee unter Verschluss gehalten werden muss - okay.
Ist ja auch eine ähnlich schützenswerte innovation wie es Fernsprecher zum Selbstwählen oder Empfangsgeräte für Tonfilme sind.
Aber wir können doch nur die eventuellen Sollbruchstellen finden, die du uns hier auch postest.
Poste den ganzen Schnipsel, dann können wir schon sagen "Ja nee, Zeile 17-24 werden eh nie erreicht weil wegen.." oder ähnliches.
Und mag ja sein, dass eine Errorlevel-Abfrage einer Serie von Robocopy-Läufen wenig Sinn macht, aber dann liegt ja dennoch das erzeugte Logfile vor, in dem nach den für dich interessanten Fehlertexten gesucht werden kann.
Die Redmonder ProaktikantInnen sind da genauso berechenbar wie ihre hiesigen Unterschleißpappenheimer - das finden wir dann also schon.
Grüße
Biber