Automatisiert Ordner verschieben - Script

BrOllek

Cadet 3rd Year
Registriert
Juli 2014
Beiträge
40
Hallo,

ich habe eine Frage und suche Hilfe, sollte sich jemand damit auskennen.

Ich habe etwa 1000 Ordner, die alle die selbe Ordnerstruktur besitzen.
Ich nehme mir mal einen Ordner XY als Beispiel raus:
Innerhalb dieses Ordners habe ich 6 Unterordner. In Unterordner Nr. 3 muss ich einen Gewissen Ordner inkl. Inhalt in den Unterordner Nr. 2 verschieben. Alle 1000 Ordner haben die selbe Struktur und alle Unterordner die selben Namen.

Da es manuell ewigkeiten dauern würde, frage ich mich, ob es ein Tool gibt, das ganze zu automatisieren (Win7)?
Wenn jemanden hierbei helfen kann, wäre ich sehr dankbar.

Grüße
 
In Unterordner Nr. 3 muss ich einen Gewissen Ordner inkl. Inhalt in den Unterordner Nr. 2 verschieben
Du meinst wohl aus Unterordner Nr. 3 musst du einen Unterunterordner inkl. Inhalt in den Unterordner Nr. 2 verschieben?

Mit 2 Zeilen als batch (for und move)
Wie die zwei Zeilen auszuehen haben, kann ich dir sagen, wenn ich deine Ordnerstruktur (inkl. Namen) kenne.
Wichtig dabei auch: liegen die 1000 Ordner alle in einem Verzeichnis oder verstreut?
 
Hi, ja alle Hauptordner liegen in einem Verzeichnis.
Die Struktur sieht innerhalb jedes Hauptordners wie Folgt aus:
Hauptordner XY:
0
1
2
3
4
5
6

Unterordner:
0.1 - 0.2 - 0.3 - 0.4 - 0.5
1.1 - 1.2 - 1.3 - 1.4 - 1.5
2.1 - 2.2 - 2.3 - 2.4 - 2.5
3.1 - 3.2 - 3.3 - 3.4 - 3.5 - 3.6
4.1 - 4.2 - 4.3 - 4.4
5.1 - 5.2 - 5.3 - 5.4
6.1 - 6.2 - 6.3 - 6.4

Der Unterordner "3.6" muss lediglich in den Überordner "2" verschoben werden. Das Umbenennen in "2.6" kann ich ja dann mit Advanced Renamer vornehmen.

Von mir aus kann ich mich auch durch jeden Hauptordner einzeln klicken, und dann mit einem Befehl den Transfer einleiten. Das würde mir schon sehr weiter helfen.
 
Code:
for /F %%a in ('dir /A:D /B') do move %%a\3\3.6 %%a\2\2.6
als Batch in dem Hauptverzeichnis ausführen (also in dem, in dem die 1000 Ordner liegen.)
Wirkt sich auf sämtliche Ordner aus, die sich in dem Hauptverzeichnis befinden und bennent deinen Ordner auch gleich in "2.6" um.
 
Wow, vielen Dank für die Hilfe! Werde den Code am Wochenende probieren!

Funktioniert der Code auch, wenn in einigen Hauptordnern der Unterordner "3.6" fehlt? Also wird dieser Ordner dann einfach übersprungen und ignoriert, oder könnte es zu einem Fehler kommen?
 
Wird trotzdem funktionieren. Es wird dann bei dem Ordner, bei dem 3.6 fehlt die Meldung "Verzeichnis/Datei wurde nicht gefunden" ausgegeben. Aber die Schleife läuft weiter, die anderen Ordner werden davon nicht beeinflusst.
 
Also ich konnte den Code nun testen und habe mir hierfür erstmal ein Testordner erstellt. Es funktioniert auch soweit! Es kommt jedoch immer zu einem Fehler, wenn der Überordner ein Leerzeichen im Namen hat. Dann findet er den Ordner nicht, da er den Text nach dem Leerzeichen Ignoriert. D.h. wenn ein Hauptordner z.B. "Bilder 1" heißt, dann schreibt er in der Fehlermeldung "Ordner >...\Bilder\...< konnte nicht gefunden werden. Das macht er für alle Ordner mit Leerzeichen so.
Gibt es ein Befehlt, bei dem die Leerzeichen beachtet werden?

Danke und LG
 
An welchen Stelle im Code muss ich die Anführungszeichen setzen?
Ich habe jetzte mehrere Varianten probiert, ohne Erfolg.

Edit: Diese Variante habe ich auch mehrmals probiert, kommt leider jedoch zur selben Fehlermeldung.

Edit2: Könnte ich eventuell einfach in einem vorherigen Batch die Leerzeichen in "_"-Unterstriche umwandeln?
 
Zuletzt bearbeitet:
Jep, mein Fehler, das FOR verwendet nur den ersten Teil. So klappt es auch mit Leerzeichen (getestet):
Code:
for /F "delims=" %%a in ('dir /A:D /B') do move "%%a\3\3.6" "%%a\2\2.6"

Zu deinem besseren Verständnis: durch "delims gleich nichts" wird das Trennzeichen für FOR auf nichts gestellt, standardmäßig ist das Leerzeichen dort ein Trennzeichen für die einzelnen Tokens.
Die cmd-Hilfe (mit Fragezeichen z.B. for /?) bietet bei sowas auch immer eine gute Anlaufstelle.
 
Zuletzt bearbeitet:
Zurück
Oben