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:
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;
Aus
Zitat:
L:\συγκρισιν
wird dann zum Beispiel
Zitat:
L:\EC4E~1
Die Commandline wird wie folgt aufgerufen:
Zitat:
RoboCopy /job:scriptname