Heute will ich Euch kurz erklären, wie man mit Hilfe einer kleinen Batch Routine von einem Ordner die Unterverzeichnisse auslesen kann. Die Inhalte dieser Unterverzeichnisse an einen neuen Speicherort kopiert oder verschiebt und bei Bedarf die alten Ordner aus denen die Dateien und Ordner verschoben wurden löscht.
Anwendungsbeispiel hierfür wäre zum Beispiel:
Ihr habt mehre Archive und diese wurden z.B. in Tages-Ordnern abgelegt und dort entpackt und es entstanden dort beim Entpacken wieder neue Unterordner mit den eigentlichen Dateien. Die folgenden Batch Skripte kopieren nun die fertig entpackten Dateien und Ordner aus den Tages-Verzeichnissen auf die höhere Ebene und entfernen die temp. erzeugten Tages-Ordner.
Wobei die eigentlichen Script viel Platz für eigene Modifikationen bieten. So könnt man z.B. auch nur für eine Dateisicherung die Daten und Ordner an einen neuen Speicherort kopieren und damit sozusagen eine eigene kleine Datensicherung starten.
Wichtig ist nur zu sehen, welche Möglichkeiten es gibt. Die restlichen Anpassungen sind dann nicht weiter schwer.
Die beiden Skripte wurden so geschrieben, dass Leerzeichen weder im Basispfad noch in der Dateistruktur eine Rolle spielen.
Variante 1 lösen wir mit Robocopy – hier gibt es etwas weniger Platz für eigene Modifikationen:
@echo off set /p verz=Gib den Dateipfad ein: dir "%verz%\" /B /AD > "%verz%\inhalt.txt" FOR /f "usebackq delims=" %%f IN ("%verz%\inhalt.txt") DO robocopy "%verz%\%%f" "%verz%" /MOVE /E DEL "%verz%\inhalt.txt" pause
Variante 2 arbeitet mit „xcopy“.
Info: Der Befehl „move“ ist nicht in der Lage Ordner zu verschieben.
@echo off set /p verz=Gib den Dateipfad ein: dir "%verz%\" /B /AD > "%verz%\inhalt.txt" FOR /f "usebackq delims=" %%f IN ("%verz%\inhalt.txt") DO xcopy "%verz%\%%f\*" "%verz%\" /E FOR /f "usebackq delims=" %%f IN ("%verz%\inhalt.txt") DO rd "%verz%\%%f" /s /q DEL "%verz%\inhalt.txt" pause
Kurze Erklärung dazu:
In der zweiten Zeile setzen wir die „Variable“ „verz“ – diese gibt den Ordner an, in dem der „Zauber“ statt finden soll.
Zeile 3 checkt den Inhalt dieses Verzeichnisses und schreibt die Ordnerstruktur in das Textfile „inhalt.txt“ im gleichen Pfad weg.
Zeile 4 startet eine Schleife mit dem Kopier-Job.
Zeile 5 entfernt die alten Verzeichnisse in der gleichen Art und Weise wie die Zeile darüber. Sollen die Originaldaten nicht gelöscht werden, so kommentiert ihr diese Zeile einfach mit einem „rem“ aus.
Zeile 6 löscht die „inhalt.txt“ – da diese nun nicht mehr benötigt wird.
Das war es dann auch schon. Ich wünsche Euch viel Spaß bei den Modifikationen des Skripts!
Tags:
- Skriptbeispiel für Batch-Komanndozeile
- verzeichnis auslesen batch
- verzeichniss und dateien verschieben mit batch
- batch dateien aus verzeichnis lesen
- batch Skript ordner mit Ordnerstruktur kopieren
Danke für diese Anleitung!!
Jetzt kann ich ganz einfach per Knopfdruck ein Backup meiner Familienbilder auf die externe Festplatte durchführen.
Ich hab mich ein wenig mehr mit Robocopy beschäftigt und habe hier eine Übersicht aller Robocopy Parameter gefunden:
https://www.itnator.net/robocopy-parameter-backup-erstellen-mir/
Gruß Hubert