Page 1 of 1

Zieldateiname ändern

Posted: Tue Jun 09, 2020 8:01 am
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

Re: Zieldateiname ändern

Posted: Tue Jun 09, 2020 8:26 am
by tobias
Hi,
ja, das geht alles mit PascalScript:
https://www.syncovery.com/pascalscript/

Ich werde hier mal ein Beispielscript posten.

Re: Zieldateiname ändern

Posted: Mon Jun 15, 2020 9:42 pm
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.

Re: Zieldateiname ändern

Posted: Mon Jun 15, 2020 9:54 pm
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;

Re: Zieldateiname ändern

Posted: Thu Jul 02, 2020 7:39 am
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