Zieldateiname ändern

German Support for Syncovery on Windows
Post Reply
serpi
Posts: 2
Joined: Tue Jun 09, 2020 7:29 am

Zieldateiname ändern

Post by serpi »

Hallo,

ich habe einen Server, auf dem ich per ftp jeden Tag eine csv Datei abhole, diese hat dann den Namen FILE_JJJJMMTT.csv (also mit dem täglichen Datum).
Das Ziel ist ein Windows Fileshare, dort benötige ich Datei mit dem Namen FILE.csv (also ohne Datum im Dateinamen).

Ist es irgendwie möglich, den Namen im Ziel beim kopieren entsprechend zu ändern?

Ideal wäre es natürlich, wenn die neueste Datei an eine ggf. bereits vorhandene angefügt werden würde (wobei hier das Problem wäre, dass die erste Zeile die Spaltenüberschriften enthält), es wäre aber auch OK, wenn am Ziel eine ggf. bereits vorhandene Datei überschrieben würde (bzw. vorher zur Sicherung umbenannt würde).

Danke & Ciao,
Alfred

tobias
Posts: 1603
Joined: Tue Mar 31, 2020 7:37 pm

Re: Zieldateiname ändern

Post by tobias »

Hi,
ja, das geht alles mit PascalScript:
https://www.syncovery.com/pascalscript/

Ich werde hier mal ein Beispielscript posten.

tobias
Posts: 1603
Joined: Tue Mar 31, 2020 7:37 pm

Re: Zieldateiname ändern

Post by tobias »

Hi,
hier ist ein Beispiel für den angefragten Fall - allerdings hier erstmal nur die Umbenennung:

Code: Select all

function OnReplaceFilenameLeftToRight(const FileName: UnicodeString;
        const isFolder: Boolean):UnicodeString;
begin
  if isFolder or (Copy(FileName,1,5)<>'FILE_') then
     Result:=FileName
  else
     Result:='FILE.csv';
  end;
Dies kann man im Profil unter Allgemein->PascalScript... angeben.

tobias
Posts: 1603
Joined: Tue Mar 31, 2020 7:37 pm

Re: Zieldateiname ändern

Post by tobias »

Wenn man umbenennen und an eine bestehende Datei anfügen möchte, geht das ungefähr folgendermaßen (nicht getestet). Dann braucht man das obige Script nicht. Hinweis: dieses Script stoppt bei der ersten leeren Zeile das Einlesen der Quelldatei. Ich gehe davon aus, dass in Ihrer Quelldatei keine leeren Zeilen vorkommen, sodass dadurch das Ende der Datei erkannt werden kann.

Code: Select all

function OnFileCopy(const DirectionIsL2R:Boolean;
        const Source,Dest,DestPath,LeftSubPath,RightSubPath:UnicodeString;
        const SourceConnector,DestConnector: Opaque):Int64;
var src,dst:Opaque;
      line:UnicodeString;
begin
  Result:=1;

  src:=OpenTextFile(Source);
  if src=0 then 
     Exit;
  dst:=AppendTextFile('D:\Zielordner\Zieldatei.csv');
  if dst=0 then
     Exit;

  line:=ReadLine(src); // forget first line (headers)

  repeat
     line:=ReadLine(src);
     if line<>'' then
       WriteLine(dst,line);
     until line='';
   
  CloseFile(dst);
  CloseFile(src);

  Result:=0;
  end;

serpi
Posts: 2
Joined: Tue Jun 09, 2020 7:29 am

Re: Zieldateiname ändern

Post by serpi »

Hallo tobias,

vielen Dank für die Antworten, das hat mir weitergeholfen.

Wie ich erfahren habe, wird immer eine vollständige Datei auf dem FTP Server abgelegt, d.h. ich habe jetzt ein Move Files definiert, der die Dateien im Ziel überschreibt und mit Hilfe deines ersten Scripts wird dabei der Name der Datei entsprechend angepasst.

Danke & Ciao, Alfred

Post Reply