Feature Request - Ordnererstellung nach Erstelldatum

General Discusssion in German
Post Reply
ALX
Posts: 4
Joined: Thu Apr 17, 2025 8:26 am

Feature Request - Ordnererstellung nach Erstelldatum

Post by ALX »

Hallo,

Ich habe ein kurioses Problem. Und zwar habe ich Ordner mit mehrere Hundertausenden (bis zu Millionen) kleinen 1KB Dateien.
Der Explorer/Powershell und Syncovery sind mäßig Glücklich bei solchen SMB Shares und es läuft zäh und über 2 Millionen Dateien geht vieles daneben.

Die Lösung ist ziemlich schlicht. Ich möchte die Möglichkeit haben anhand des Erstelldatums der Dateien diese in Jährliche Ordner einteilen zu lassen.
Vor allem ist eine Funktion die wohl auch für Bilder sehr beliebt sein dürfte.
Wie mir scheint gibt es diese Funktion nicht. Jedenfalls habe ich nichts gefunden wie ich eine solchen Job erstellen könnte.

Die Funktion würde ich in folgenden Optionen suchen:
Ordner/Folders weil ich mir denke automatische Einteilung in Ordner.
Bei Filtern da es ja bereits "File Age and Size" gibt.
Oder eventuell noch unter Versionierung da hier auch Timestamps eingestellt werden können.

Aktueller Workaround wäre pro Jahr einen Job anzulegen und dies mit Dateialter zu Filtern.

MfG,
ALX
tobias
Posts: 1982
Joined: Tue Mar 31, 2020 7:37 pm

Re: Feature Request - Ordnererstellung nach Erstelldatum

Post by tobias »

Guten Tag,
man kann Dateien mittels eines PascalScripts in Ordner sortieren lassen. Allerdings nach dem Datum der letzten Änderung, nicht dem Erstelldatum. Ich vermute, dass das in Ihrem Fall dasselbe ist.

Man kann außerdem den Syncovery Remote Service auf der anderen Seite installieren, um das Listing zu beschleunigen.

Hier ist ein zum Beispiel ein Script, das die Dateien in separate Ordner pro Monat sortiert. Dies passiert beim Kopieren von links nach rechts. Das Script muss über Allgemein->PascalScript in das Profil kopiert werden.

Code: Select all

function OnBeforeFileCopy(const DirectionIsL2R:Boolean;
        var Source,Dest,DestPath,LeftSubPath,RightSubPath:UnicodeString):Boolean;
var SourceFN,Year,Month,AddFolderName,NewDestPath,NewDest,NewRightSubPath:UnicodeString;
    Age:Double;
begin
  Result:=true;
  if not DirectionIsL2R then
     Exit; 
  SourceFN:=ExtractFileName(Source);
  Age:=FileToCopyLeftModified;
  Year:=IntToStr(YearOf(Age));
  Month:=IntToStr(MonthOf(Age));
  AddFolderName:=Year+'-'+Month;
  NewDestPath:=ConcatPathWithDelim(RightBasePath,AddFolderName,PathDelim);
  NewDest:=ConcatPathWithDelim(NewDestPath,ExtractFileName(Dest),PathDelim);
  NewRightSubPath:=IncludeLeadingPathDelim(AddFolderName);
 
  if not MakeSurePathExists(NewDestPath,true) then begin
     Log('Could not create '+NewDestPath);
     Exit;
     end;
 
  Dest:=NewDest;
  DestPath:=NewDestPath;
  RightSubPath:=NewRightSubPath;
  end;


function OnBeforeFolderCreate(const DirectionIsL2R:Boolean;
        var Source,Dest,Reason:UnicodeString):Boolean;
begin
  Result:=false;
  end;
ALX
Posts: 4
Joined: Thu Apr 17, 2025 8:26 am

Re: Feature Request - Ordnererstellung nach Erstelldatum

Post by ALX »

Vielen Dank für das script.
Tatsächlich lässt es sich hiermit einfach lösen.
Und ja Modified Date macht wohl auch mehr Sinn.

Ich werde es auch gleich als Referenz nehmen für weiterer solcher Tasks.
Leider kann ich keinen Remote Client Installieren da es sich hierbei um einen Filestorage handelt der in ein DFS eingebunden ist.
Wie dem auch sei. Damit wäre mein problem jedenfalls gelöst.

Danke & LG,
ALX
Post Reply