Einzelnen Beitrag anzeigen

Benutzerbild von Garfield
Garfield

Registriert seit: 9. Jul 2004
Ort: Aken (Anhalt-Bitterfeld)
1.334 Beiträge
 
Delphi XE5 Professional
 
#1

Robocopy und Unicodeverzeichnisse

  Alt 21. Jul 2007, 13:12
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
Gruss Garfield
Ubuntu 22.04: Laz2.2.2/FPC3.2.2 - VirtBox6.1+W10: D7PE, DXE5Prof
  Mit Zitat antworten Zitat