Frage

Es wurde beauftragt, die Nutzungsrate der Datei-Server zu reduzieren, daher möchte ich meinen Teil meine komprimierten alten Dateien (dh Excel/Access/TXT) durchführen.

Wir haben einige Ordner, die Tausende von Dateien enthalten, sodass ich das gesamte Verzeichnis nicht nur in eine große Datei rühren kann. Es wäre vorzuziehen, eine Reihe kleinerer Dateien zu haben, damit es für einen Benutzer einfacher ist, die Daten zu finden 'Eimer', nach dem sie suchen.

Gibt es eine Möglichkeit, C# zu verwenden, um ein Verzeichnis durchzulesen und die Dateien in Jahrmonatgruppen (alle Dateien aus dem Jahresmonatsmonats) in einem Reißverschluss zusammenzusetzen)?

Oder wäre es besser, ein Skript wie Autoit zu verwenden?

Oder gibt es bereits Programme, die dies tun, damit ich nichts codieren muss?

War es hilfreich?

Lösung

Ich bin mir nicht sicher, ob es in Ihrer Frage das Reißverschluss, die Auswahl von Dateien aus bestimmten Jahren/Monat oder beides betrifft.

Über das Reißverschluss von Peter erwähnte bereits 7-Zip und Sharpziplib. Ich habe persönlich nur Erfahrung mit letzterem, aber es ist alles positiv, einfach zu arbeiten.

Über das Gruppieren Ihrer Dateien kann dies erfolgen, indem alle Dateien im Ordner iteriert werden und sie entweder nach dem Datum erstellt oder zuletzt geändertes Datum gruppieren.

Pseudo:

var files = new Dictionary<DateTime, IList<string>>();
foreach (var file in Directory.GetFiles(...)) {
   var fi = new FileInfo(file);
   var date = fi.CreatedDate();
   var groupDate = new DateTime(date.Year, date.Month);

   if (!files.ContainsKey(groupDate)) files.Add(groupDate, new Collection<string>());

   files[groupDate].Add(file);
}

Jetzt sollten Sie über ein Wörterbuch mit unterschiedlichen Jahr/Monat -Schlüssel und nachschließend eine Liste von Dateien enthalten, die zu dieser Gruppe gehören. Also zum Reißverschluss

Pseudo:

foreach (var entry in files) {
   var date = entry.Key;
   var list = entry.Value;

   // create zip-file named date.ToString();
   foreach (var file in list) {
      // add file to zip
   } 
}

Andere Tipps

Sicherlich können Sie dies mit ein bisschen C# und Bibliotheken mögen 7-Zip oder Shartziplib.

Sie können system.io.directory.getFiles () verwenden, um die Dateien in jedem Verzeichnis durchzuführen, nach Dateinamen zu analysieren und zu einem 7-Zip- oder Sharpziplib-Objekt hinzuzufügen. Wenn es Tausende von Dateien sind, ist es möglicherweise am besten, sie in einen Dienst oder eine Art geplante Aufgabe zu werfen, um über Nacht zu läuft, um die Fileshare nicht zu besteuern.

Viel Glück !

BEARBEITEN: Als Addendum können Sie für jede Datei ein System.io.fileInfo -Objekt verwenden, wenn Sie nach erstellter Datum oder andere Dateianpassungen analysieren müssen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top