Wie kann ich Dateigruppen anhand der ersten x Zeichen des Dateinamens komprimieren?

669
vixbix

Ich habe ein einzelnes Verzeichnis, in das Protokolldateien auf diese Weise gespeichert werden:

20160701_file001.log 20160701_file002.log 20160702_file001.log ... 20160801_file001.log 20160801_file002.log 20160801_file003.log ... 

Könnten Sie eine einzelne Schleife empfehlen, die unter dem übergeordneten Verzeichnis in der Eingabeaufforderung ausgeführt werden kann. In dieser Datei werden alle Dateien nur für 201607 komprimiert, wobei die ZIP-Datei (die sich an derselben Stelle befinden würde) unter Verwendung des Namens der ältesten Datei in benannt wird gezippt werden

Dies würde 31 Dateien für Juli ergeben, da jeder Tag über eine eigene ZIP-Datei verfügt (der Versuch, alle zu komprimieren, führt zu einem Fehler, der zu viele Dateien enthält).

BEARBEITEN: Es scheint, dass meine SuperUser-Etikette noch nicht auf dem neuesten Stand ist, da ich überall auf der Website Kommentare vom selben Benutzer bekomme und auf die vielen "How to .." -Dokumente verweist. Verzeihung an alle!

Das Skript, das ich verwende, finden Sie unten. Dies ist nur ein Tag lang wert und ich suche Hilfe bei der Anpassung, um beispielsweise Protokolldateien eines ganzen Monats im selben Verzeichnis zu erstellen.

7z.exe a -tzip 20160731_file001.log.zip 201607*_file*.log 
1
Ja, aber ... bitte beachten Sie, dass [SU] kein kostenloser Skript- / Code-Schreibservice ist. Wenn Sie uns sagen, was Sie bisher versucht haben (einschließlich der Skripts / des Codes, die Sie bereits verwenden) und wo Sie stecken bleiben, können wir versuchen, bei bestimmten Problemen zu helfen. Sie sollten auch lesen [Wie kann ich eine gute Frage stellen?] (Https://superuser.com/help/how-to-ask). DavidPostill vor 8 Jahren 2
Danke für die Tipps @DavidPostill - Ich habe die Frage geändert, um das vorliegende Thema besser zu kommunizieren. vixbix vor 8 Jahren 0
Ihre Frage ist immer noch nicht klar. 1 /. "Dies würde 31 Dateien für Juli ergeben, da jeder Tag eine eigene ZIP-Datei hätte" und 2 / "unter Verwendung des Namens der ältesten zu zippenden Datei" ist nicht gleichzeitig möglich. 31 Dateien können nicht alle denselben Namen haben. DavidPostill vor 8 Jahren 0
7zip verfügt nicht über eine Lösch- oder Verschiebungsfunktion. Sie müssen also einen Stapel schreiben, um diese Funktionslücke zu umgehen. Sie können den aktuellen Monat mit der Datumsvariablen in DOS einfach zippen. Es ist nicht einfach, am 1. August eine Batchdatei auszuführen, die den vorherigen Monat komprimieren möchte ... DOS ist nicht so schlau ... https://community.spiceworks.com/scripts/show/835-zip-7zip-files -mit-date-and-move-very-simple-and-works ... für manuelles Zippen verwende ich einfach '7za a 201607 201607 * .log` <- dies sollte alle Protokolldateien für Juli in eine ZIP-Datei packen . Sun vor 8 Jahren 0

0 Antworten auf die Frage