Programm oder Skript zum Durchlaufen der Verzeichnisstruktur basierend auf meiner Schleife

333
vixbix

Ich habe die folgende Schleife und hätte gerne etwas Hilfe, um die Funktionalität zu erweitern.

for /D %d in (*.*) do "c:\Program Files (x86)\7-Zip\7z.exe" a -tzip "%d.zip" ".\%d\*" 

Derzeit in einer Verzeichnisstruktur wie folgt:

Protokolldateien> Jahr> Monat> Tag> Stunden

Ich navigieren manuell zum Day - Verzeichnis, führen Sie meinen ‚für‘ Schleife in Windows - Befehlszeile, und meine Schleife erstellt Verzeichnisse jeden ‚gezippt Hour ‘ Verzeichnis unter dem gewählten Tag . Ich navigiere dann manuell zum nächsten Tag und wiederhole es, bis ich den ganzen Monat gezippt habe .

Umgebung ist Server 2003. Ich kann NUR eine Eingabeaufforderung verwenden (keine PowerShell oder Installationsbereich) und keine "Lösungen" von Drittanbietern.

F1: Kann ich das automatisieren, z. B. auf Monats- oder sogar Jahresebene ,und dabei die Stundenüberschreitung beibehalten, da dies der entscheidende Punkt ist ...?

F2: Ich migriere derzeit die gezippten stündlichen Dateien manuell in den kalten Speicher - die Verzeichnisstruktur am Zielort unterscheidet sich geringfügig von der an der Quelle. Gibt es auch einen Spielraum, dies zu automatisieren?

Vielen Dank im Voraus für Ihre Vorschläge

1
Wie ist das Format für die Namen Ihrer Verzeichnisse? DavidPostill vor 7 Jahren 0
ZB AppLogs> 2016> 01> 24> 17 repräsentiert am 24. Januar 17.00 Uhr vixbix vor 7 Jahren 0
"Ich migriere derzeit die gezippten stündlichen Dateien manuell zu einem Cold-Storage-Speicher - die Verzeichnisstruktur am Zielort unterscheidet sich geringfügig von der an der Quelle." Wie ist die Cold-Storage-Verzeichnisstruktur? DavidPostill vor 7 Jahren 0
OK, zum Beispiel: `C: \ SomeApp \ SubDir1 \ SubDir2 \ SubDir3 \ LogFiles \ 2016` würde monatliche Quellverzeichnisse enthalten, die jeweils einen eigenen Tag haben, und jeden Tag mit ** jetzt ** gezippten Stunden PLUS Originalverzeichnisse mit den Protokolldateien. "X: \ SomeVM \ SomeApp \ LogFiles \ 2016" ist das Ziel, an dem ich nur die ZIP-Dateien unter ihren korrekten monatlichen und täglichen Strukturen erstellen und speichern möchte. vixbix vor 7 Jahren 0

1 Antwort auf die Frage

0
DavidPostill

Q1: Kann ich dies beispielsweise auf Monats- oder sogar Jahresebene automatisieren?

das stundenlanges Zippen erhalten, denn das ist der springende Punkt ...?

Um dies zu automatisieren, müssen verschachtelte forSchleifen verwendet werden.

Die Lösung unten ist für die Monatsebene. Verwenden Sie den gleichen Ansatz mit einer anderen Schachtelungsebene für eine Lösung auf Jahrebene.

Führen Sie die folgende Batchdatei (RecurseDays.cmd) im Ordner "Month" Ihrer Wahl aus:

@echo off rem start in a month folder and loop through the days for /d /r %%d in (*) do ( rem for each day, change directory to the day pushd %%d rem loop through the hours for /d %%h in (*) do ( rem zip the hour echo "c:\Program Files (x86)\7-Zip\7z.exe" a -tzip "%%h.zip" ".\%%h\*" ) rem done with the day, change directory back to the month popd ) 

Anmerkungen:

  • Entfernen Sie den Befehl echoaus dem 7zBefehl, wenn Sie mit dem Batch zufrieden sind, wie erwartet.

F2: Derzeit migriere ich die gezippten stündlichen Dateien manuell in den kalten Speicher

Die Verzeichnisstruktur am Zielort unterscheidet sich geringfügig von der an der Quelle. Gibt es auch einen Spielraum, dies zu automatisieren?

Sie könnten verwenden robocopy. Der richtige Ort wäre gleich nach:

 rem done with the day, change directory back to the month 

Hier können Sie alle Stundendateien für alle Tage des Monats migrieren, in dem Sie sich befinden. robocopyDie Verzeichnisstruktur wird beibehalten. Außerdem haben Sie die Möglichkeit, die ZIP-Dateien nach Belieben zu verschieben (anstatt sie nur zu kopieren).

Weitere Informationen finden Sie unter dem Link unten.

Lesen Sie weiter

  • Ein AZ-Index der Windows-CMD-Befehlszeile - Eine hervorragende Referenz für alles, was mit Windows-Cmd-Zeilen in Verbindung steht.
  • for / d - Führt einen Befehl unter Umständen für mehrere Verzeichnisse / Ordner aus.
  • pushd - Ändert das aktuelle Verzeichnis / den Ordner und speichert den vorherigen Ordner / Pfad zur Verwendung durch den POPD-Befehl.
  • popd - Wechseln Sie in das Verzeichnis, das zuletzt vom Befehl PUSHD gespeichert wurde.
  • robocopy - Robustes Kopieren von Dateien und Ordnern.
Funktionierte fast perfekt - ich musste das letzte Zippargument von `" %% h \ * "` auf `". \ %% h \ * "` einstellen, sodass ich in der ZIP-Datei kein Verzeichnis mit dem gleichen Namen erhielt . Danke, dass Sie geholfen haben, Q1 so effektiv anzusprechen! vixbix vor 7 Jahren 0
@vixbix Ah. Ich habe mich gefragt, warum Sie dort das ``. \ `` Hatten. Ich dachte, es wäre nicht nötig, also entfernte ich es. DavidPostill vor 7 Jahren 0
@vixbix Antwort aktualisiert an Adresse Q2. DavidPostill vor 7 Jahren 0