![]() |
Robocopy und Unicodeverzeichnisse
Wie muss ein Robocopy Script gespeichert werden, damit RoboCopy die darin enthaltenen Verzeichnisnamen mit Unicodezeichen erkennt? Bzw wie muss RoboCopy bei Unicode aufgerufen werden?
Es soll ein Verzeichnis mit Robocopy kopiert werden, dessen Name Unicodezeichen enthält bzw enthalten kann. Für Unicode habe ich die TTNTControls verwendet. Enthalten Verzeichnisnamen Unicodezeichen, wird das Script nicht ausgeführt. Zur Kontrolle habe ich die Scripte mit SciTe als Unicode, Unicode Big Enidian und UTF-8 abgespeichert. Wandle ich den WideString-Verzeichnisnamen über die untenstehende Funktion in Ansizeichen um, funktioniert es. Dies kann jedoch keine Lösung sein.
Delphi-Quellcode:
Aus
function WideToAnsi(const ws: WideString): String;
var i : Integer; j : Integer; tmp : String; Ebene : Array of WideString; SearchRec : TSearchRec; gefunden : Boolean; begin j := 0; SetLength(Ebene, j + 1); Ebene[j] := ''; for i := 1 to Length(ws) do if ws[i] <> '\' then Ebene[j] := Ebene[j] + ws[i] else begin inc(j); SetLength(Ebene, j + 1); Ebene[j] := ''; end; Result := Ebene[0]; for i := 1 to Length(Ebene) - 1 do begin tmp := Ebene[i]; if tmp = Ebene[i] then begin Result := Result + '\' + Ebene[i]; end else begin gefunden := False; If findfirst(Result + '\*', faAnyFile, SearchRec) = 0 then begin repeat if SearchRec.Name = tmp then begin Result := Result + '\' + Trim(SearchRec.FindData.cAlternateFileName); Gefunden := True; end; until (FindNext(SearchRec) <> 0) or gefunden; end; FindClose(SearchRec); end; end; end; Zitat:
Zitat:
Zitat:
|
Re: Robocopy und Unicodeverzeichnisse
Moin Garfield,
hast Du Dir auch mal den Errorlevel angeschaut, den Robocopy zurückgibt? |
Re: Robocopy und Unicodeverzeichnisse
Nein das hatte ich nicht. :cry:
Versuch per CMD: Quellverzeichnis: L:\συγκρισιν (Das Wort stammt von einer griechischen Seite) als Ansicode: L:\EC4E~1 Zielverzeichnis: G:\Test Beide Verzeichnisse existieren. Datei Unicode.rcj
Code:
::
:: Quellverzeichnis / Source Directory :: /SD:L:\συγκρισιν :: :: Zielverzeichnis / Destination Directory :: /DD:G:\Test :: :: Kopieroptionen / Copy Options :: /S :: Kopieren aller Unterverzeichnisse mit Ausnahme der leeren. :: /COPYALL :: Alle Dateiinformationen kopieren, Adminrechte erforderlich :: :: Wiederholungsoptionen / Retry Options :: /R:10 :: Anzahl der Wiederholungen / Numbers of Retrys :: :: Logoptionen / Logging Options :: /V :: Konsolenausgabe, übersprungene Dateien anzeigen. /TS :: Zeitstempel der Quelldateien in der Ausgabe anzeigen. /FP :: Vollen Pfad der Dateien angeben. Datei robo.cmd
Code:
Beide Dateien sowie RoboCopy XP026 liegen im Verzeichnis "L:\RoboCopy\".
robocopy L:\RoboCopy\unicode.rcj
Der Aufruf der Robo.cmd ergibt folgendes:
Code:
Als Quellverzeichnis wird irgendwas verwendet und das Zielverzeichnis nicht eingetragen. Das fehlende Zielverzeichnis wird bemängelt.
L:\RoboCopy>robocopy /job:L:\RoboCopy\unicode.rcj
Job File : L:\ROBOCOPY\UNICODE.RCJ ------------------------------------------------------------------------------- ROBOCOPY :: Robust File Copy for Windows :: Version XP026 ------------------------------------------------------------------------------- Started : Sat Jul 21 15:53:11 2007 Source : L:\RoboCopy\˜ç:\ Dest - Files : *.* Options : /JOB *.* /COPY:DAT /R:1000000 /W:30 ------------------------------------------------------------------------------ ERROR : No Destination Directory Specified. Simple Usage :: ROBOCOPY source destination /MIR source :: Source Directory (drive:\path or \\server\share\path). destination :: Destination Dir (drive:\path or \\server\share\path). /MIR :: Mirror a complete directory tree. For more usage information run ROBOCOPY /? or read Robocopy.Doc. NOTE: Read "True Replication" in Robocopy.Doc prior to first use of /MIR ! **** /MIR can DELETE files as well as copy them ! Die Datei Ansicode.rcj ist bis auf den übersetzten Quellverzeichnisnamen mit der Unicode.rcj identisch. Ergebnis:
Code:
Das Log habe ich gekürzt. Hier funktioniert es.
L:\RoboCopy>robocopy /job:L:\robocopy\Ansicode.rcj
Job File : L:\ROBOCOPY\ANSICODE.RCJ ------------------------------------------------------------------------------- ROBOCOPY :: Robust File Copy for Windows :: Version XP026 ------------------------------------------------------------------------------- Started : Sat Jul 21 15:42:11 2007 Source : L:\EC4E~1\ Dest : G:\Test\ Files : *.* Options : /JOB *.* /V /TS /FP /S /COPY:DAT /R:10 /W:30 ------------------------------------------------------------------------------ 1 L:\EC4E~1\ New File 215589 2007/07/06 20:58:45 L:\EC4E~1\Dateiliste.rar 0% 30% 60% 91% 100% New Dir 1 L:\EC4E~1\s?????s??\ New File 215589 2007/07/06 20:58:45 L:\EC4E~1\s?????s??\Dateiliste.rar 0% 30% 60% 91% 100% ------------------------------------------------------------------------------ Total Copied Skipped Mismatch FAILED Extras Dirs : 8 7 1 0 0 0 Files : 40 40 0 0 0 0 Bytes : 5.34 m 5.34 m 0 0 0 0 Times : 0:00:00 0:00:00 0:00:00 0:00:00 Speed : 6892410 Bytes/sec. Speed : 394.386 MegaBytes/min. Ended : Sat Jul 21 15:42:12 2007 |
Re: Robocopy und Unicodeverzeichnisse
Moin Garfield,
stehen die Pfade in ""? |
Re: Robocopy und Unicodeverzeichnisse
Code:
Da es bei Ansi ohne Hochkommata funktioniert hatte, sah ich keine Veranlassung dafür. Der Test mit Hochkommata bringt leider keine Änderung.
::
:: Quellverzeichnis / Source Directory :: /SD:L:\συγκρισιν :: :: Zielverzeichnis / Destination Directory :: /DD:G:\Test ... Die Verwendung des Schalters /Unicode bewirkt anscheinend nur, dass die Konsolenausgabe gesperrt angezeigt wird. Könnte es sein, dass es an der Konsole selbst liegt? |
Re: Robocopy und Unicodeverzeichnisse
![]() |
Re: Robocopy und Unicodeverzeichnisse
Mal ein paar Gedanken:
|
Re: Robocopy und Unicodeverzeichnisse
Liste der Anhänge anzeigen (Anzahl: 1)
Wenn ich versuche eine Jobdatei, welche in Unicode kodiert ist, abzuarbeiten, wird anscheinend das aktuelle Verzeichnis und die ersten beiden Zeichen der Jobdatei als Quellverzeichnis verwendet. Nun habe ich einen ANSI-Job verwendet und ihn eine Unicodelogdatei anlegen lassen. Ich denke, dass eine Jobdatei mit derselben Kodierung wie das Log ausgeführt werden könnte.
Die Logdatei befindet sich im Anhang. Die Datei beginnt mit FF FE 0A 00. Nach ![]() ![]() Wenn ich die Datei mit BabelPad als UTF-8 speichere wird sie kleiner, bei UTF-16 größer. Unicode oder UCS 2 wird nicht unterstützt, sodass ich das nicht testen kann. Wobei das Unicode des Editors auch nicht das richtige war. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:40 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz