Frage zu Robocopy

stevie72

Newbie
Registriert
Nov. 2007
Beiträge
2
Guten Tag liebes Forum,
ich habe ein Problem mit Robocopy.
Ich finde den Fehler leider nicht.

Hier ist meine Source
chcp 1252
set ue=ü
set ae=ä
set oe=ö
set Uue=Ü
set Aae=Ä
set Ooe=Ö
set ss=ß

@echo off

net use "Hier stehen die login Daten des Servers"

set sourceDir="\\die Netzwerk IP"
set targetDir="Target Pfad"
set LogFile="%tagetDir%\LogFile.TXT"


REM altes Logfile erstmal löschen
REM DEL "%LogFile%"

echo.
echo.
echo ======== altes LogFile gelöscht ==========
echo.

dir %sourceDir% >nul || ( echo FEHLER: Quellverzeichnis nicht gefunden. && echo %sourceDir% && goto end)
dir %targetDir% >nul || ( echo FEHLER: Zielverzeichnis nicht gefunden - Laufwerk nicht gemounted?? && echo %targetDir% && goto end)

echo.
echo =============== Robocopy =================
echo ===== Aktualisiere die Service Files =====
echo.

robocopy "%sourceDir%" "%targetDir%" /MIR /ETA /V /R:2 /W:2 /BYTES /UNILOG:%LogFile%" /TEE

REM /MIR Komplettes Verzeichnis wird gespiegelt, also auch nicht mehr vorhandene Dateien gelöscht.
REM /ETA Die Dauer des Kopiervorgangs wird angezeigt
REM /V Erzeugt eine ausführliche Ausgabe und zeigt alle übersprungenen Dateien an.
REM /B Kopiert Dateien im Sicherungsmodus.
REM /R:2 Gibt die Anzahl von Wiederholungsversuchen für fehlerhafte Kopiervorgänge an.
REM /W:2 Gibt die Wartezeit zwischen Wiederholungen in Sekunden an. Der Standardwert von n ist 30 (Wartezeit 30 Sekunden).
REM /BYTES
REM /UNICODE Zeigt die Status Ausgabe als Unicode-Text an.
REM /UNILOG:<Logfile> Schreibt die Status Ausgabe als Unicode-Text in die Protokolldatei (überschreibt die vorhandene Protokolldatei).
REM /TEE Schreibt die Status Ausgabe in das Konsolenfenster sowie in die Protokolldatei.

echo.
echo -- Dokumentenabgleich erfolgreich durchgeführt! - Taste druecken.
echo.

chcp 850>0

:end
pause>nul
REM net use S: /DELETE REM unmount Drive

exit

Robocopy kopiert damit zwar die Daten aber warum wird ein logfile mit Namen "0" erzeugt (ohne Daten) und nicht logfile.txt?
 
/UNILOG:%LogFile%" - stimmt das so ohne führendes Anführungszeichen?
 
Spontan sticht mir das ins Auge:

set LogFile="%targetDir%\LogFile.TXT"

Dadurch ist die Variable LogFile als Pfad nicht das was du erwartest, sondern lediglich: "\LogFile.TXT". Das interpretiert robocopy evtl. als Fehler. Also erstmal den Aufruf von %targetDir% korrigieren.

Ansonsten musst du dir mal deine Anführungszeichen anschauen. Du hast bei jeder Gelegenheit Anführungszeichen verwendet und im worst case hast du jetzt eine ganze Reihe davon. Eigentlich setzt man sie nur dort, wo explizit kein Leerzeichen sein darf.
 
  • Gefällt mir
Reaktionen: snaxilian und cvzone
Code:
chcp 850>0
Wenn du den Output nicht willst, heißt es nul.
Code:
chcp 850>nul
 
Im übrigen empfiehlt es sich bei batch stets, zum Debugging ein paar "echo variable: %variable%" einzubauen, da man sonst keinerlei Anhaltspunkte hat was passiert. So kann man schnell erkennen ob in den Variablen das steht was man erwartet oder ob man zB zu viele " hat oder auch zu viele / im Pfad oder was auch immer. Sobald die batch funktioniert, nimmt man die echos wieder raus bzw. kommentiert sie aus. So habe ich beispielsweise deinen Code genommen, ihn in eine batch kopiert und einfach mal laufen lassen. Die Programmaufrufe (zB robocopy) habe ich dabei ebenfalls mit echo versehen, um den kompletten Aufruf sichtbar zu machen.

Wenn du das so machst, kommst du der Ursache mit eigenem Gehirnschmalz schnell auf die Spur ;)
 
Zurück
Oben