gelöst Verschiedenen Unterverzeichnissen neues Wurzelverzeichnis geben?
Hallo zusammen!
Ich versuche mit move.exe und/oder xcopy ca. 300 Unterverzeichnisse (deren Unterverzeichnisse und die Dateien darin) in ein neues Stammverzeichnis zu verschieben. Funktioniert leider nicht so ganz...
Meine Verzeichnisstruktur ist beispielsweise:
D:\CD001\Jackson\Jahr_2000\Singles\Lied1.mp3
D:\CD001\Metallica\Jahr_1998\LP\Lied4.ac3
D:\CD001\Greenday\Jahr_1996\Concert\Lied2.ogg
Daraus soll werden:
D:\CD001\Jahr_2000\Singles\Lied1.mp3
D:\CD001Jahr_1998\LP\Lied4.ac3
D:\CD001\Jahr_1996\Concert\Lied2.ogg
Wie läßt sich das anstellen? Mit bestem Dank,
-h-
Ich versuche mit move.exe und/oder xcopy ca. 300 Unterverzeichnisse (deren Unterverzeichnisse und die Dateien darin) in ein neues Stammverzeichnis zu verschieben. Funktioniert leider nicht so ganz...
Meine Verzeichnisstruktur ist beispielsweise:
D:\CD001\Jackson\Jahr_2000\Singles\Lied1.mp3
D:\CD001\Metallica\Jahr_1998\LP\Lied4.ac3
D:\CD001\Greenday\Jahr_1996\Concert\Lied2.ogg
Daraus soll werden:
D:\CD001\Jahr_2000\Singles\Lied1.mp3
D:\CD001Jahr_1998\LP\Lied4.ac3
D:\CD001\Jahr_1996\Concert\Lied2.ogg
Wie läßt sich das anstellen? Mit bestem Dank,
-h-
9 Antworten
- LÖSUNG mathe172 schreibt am 04.08.2010 um 22:38:09 Uhr
- LÖSUNG bastla schreibt am 04.08.2010 um 22:53:28 Uhr
- LÖSUNG hannesmcmaster schreibt am 04.08.2010 um 23:14:46 Uhr
- LÖSUNG bastla schreibt am 04.08.2010 um 23:18:13 Uhr
- LÖSUNG hannesmcmaster schreibt am 04.08.2010 um 23:14:46 Uhr
- LÖSUNG 60730 schreibt am 04.08.2010 um 23:58:27 Uhr
- LÖSUNG hannesmcmaster schreibt am 05.08.2010 um 10:06:29 Uhr
- LÖSUNG bastla schreibt am 05.08.2010 um 10:47:07 Uhr
- LÖSUNG hannesmcmaster schreibt am 05.08.2010 um 18:47:48 Uhr
- LÖSUNG bastla schreibt am 05.08.2010 um 19:39:58 Uhr
- LÖSUNG hannesmcmaster schreibt am 05.08.2010 um 18:47:48 Uhr
- LÖSUNG bastla schreibt am 05.08.2010 um 10:47:07 Uhr
- LÖSUNG hannesmcmaster schreibt am 05.08.2010 um 10:06:29 Uhr
LÖSUNG 04.08.2010 um 22:38 Uhr
Hallo!
Ist die Struktur genau/immer so? Also mit CD-Name\Band\Jahr_XXXX\album(oder was das ist)\Lied ?
Mathe172
Ist die Struktur genau/immer so? Also mit CD-Name\Band\Jahr_XXXX\album(oder was das ist)\Lied ?
Mathe172
LÖSUNG 04.08.2010 um 22:53 Uhr
Hallo hannesmcmaster und willkommen im Forum!
Grundsätzlich sollte das etwa so gehen:
Solange (in der Testphase) die beiden "echo" in Zeile 5 stehen, werden die Befehle nur angezeigt ...
Kurz zum Ablauf:
Zunächst wird in den vorgegebenen Ordner ("D:\CD001") gewechselt - damit werden die Pfade kürzer und einfacher zu verwenden.
Die erste "for"-Schleife geht die erste Unterordnerebene durch ("Jackson", "Metallica", "Greenday"). Die "for /f"-Schleife hat hier gegenüber dem "for /d" den Vorteil, dass sozusagen am Beginn der Verarbeitung ein "Schnappschuss" der vorhandenen Ordner gemacht wird und während des Ablaufs (durch das "Nach-oben-verschieben") neu hinzukommende Ordner nicht nochmals verarbeitet werden.
Die zweite Schleife ermittelt alle Unterordner des jeweiligen Ordners lt erster Schleife und kopiert diese (samt allen Unterordnern, selbst wenn diese leer sein sollten) in den Ausgangsordner, wobei der Zielordner sich aus dem Namen des Unter-(Unter-)Ordners (zB "Jahr_2000") ergibt. Während "move" scheitern würde, wenn dieser Zielordner bereits existiert, kopiert "xcopy" auch in bestehende Ordner.
Wenn der Kopiervorgang ohne Fehler beendet wurde (und nur dann - deshalb Verknüpfung mit "&&"), kann der Ordner rückstandsfrei entsorgt werden.
Der Ordnung halber wird nach Durchlaufen aller Schleifen der Wechsel in den Basisordner ("D:\CD001") wieder rückgängig gemacht.
Die Unterordner der ersten Ebene ("Jackson", "Metallica", "Greenday") bleiben übrigens noch bestehen, auch wenn sie völlig leer sein sollten - um solche "Überreste" zu entfernen, würde ich im Anschluss eine weitere Schleife über alle Ordner verwenden ...
Grüße
bastla
Grundsätzlich sollte das etwa so gehen:
01.
@echo off & setlocal
02.
set "Ordner=D:\CD001"
03.
04.
pushd "%Ordner%"
05.
for /f %%i in ('dir /b /ad 2^>nul') do for /d %%a in ("%%i\*.*") do echo xcopy /e "%%a" "%%~nxa\" && echo rd /s /q "%%a"
06.
popd
Kurz zum Ablauf:
Zunächst wird in den vorgegebenen Ordner ("D:\CD001") gewechselt - damit werden die Pfade kürzer und einfacher zu verwenden.
Die erste "for"-Schleife geht die erste Unterordnerebene durch ("Jackson", "Metallica", "Greenday"). Die "for /f"-Schleife hat hier gegenüber dem "for /d" den Vorteil, dass sozusagen am Beginn der Verarbeitung ein "Schnappschuss" der vorhandenen Ordner gemacht wird und während des Ablaufs (durch das "Nach-oben-verschieben") neu hinzukommende Ordner nicht nochmals verarbeitet werden.
Die zweite Schleife ermittelt alle Unterordner des jeweiligen Ordners lt erster Schleife und kopiert diese (samt allen Unterordnern, selbst wenn diese leer sein sollten) in den Ausgangsordner, wobei der Zielordner sich aus dem Namen des Unter-(Unter-)Ordners (zB "Jahr_2000") ergibt. Während "move" scheitern würde, wenn dieser Zielordner bereits existiert, kopiert "xcopy" auch in bestehende Ordner.
Wenn der Kopiervorgang ohne Fehler beendet wurde (und nur dann - deshalb Verknüpfung mit "&&"), kann der Ordner rückstandsfrei entsorgt werden.
Der Ordnung halber wird nach Durchlaufen aller Schleifen der Wechsel in den Basisordner ("D:\CD001") wieder rückgängig gemacht.
Die Unterordner der ersten Ebene ("Jackson", "Metallica", "Greenday") bleiben übrigens noch bestehen, auch wenn sie völlig leer sein sollten - um solche "Überreste" zu entfernen, würde ich im Anschluss eine weitere Schleife über alle Ordner verwenden ...
Grüße
bastla
LÖSUNG 04.08.2010 um 23:14 Uhr
Hallo,
danke für die schnelle Hilfe, leider passiert bei mir gar nichts. Habe den Code als .bat gespeichert und mit Administrator-Rechten über cmd.exe gestartet. Nur bleibt alles schwarz.
@mathe172: Die Unterordner müssen nicht Jahr_XXX heißen, sondern können beliebige Namen haben. Wichtig ist, dass die Verzeichnisstruktur erhalten bleibt, nur der jeweils 1. Ordner des gemeinsamen Unterverzeichnisses (CD001 hier) "gelöscht" oder "übersprungen" wird.
danke für die schnelle Hilfe, leider passiert bei mir gar nichts. Habe den Code als .bat gespeichert und mit Administrator-Rechten über cmd.exe gestartet. Nur bleibt alles schwarz.
@mathe172: Die Unterordner müssen nicht Jahr_XXX heißen, sondern können beliebige Namen haben. Wichtig ist, dass die Verzeichnisstruktur erhalten bleibt, nur der jeweils 1. Ordner des gemeinsamen Unterverzeichnisses (CD001 hier) "gelöscht" oder "übersprungen" wird.
LÖSUNG 04.08.2010 um 23:18 Uhr
Hallo hannesmcmaster!
Dann mach mal aus dem "echo off" in der ersten Zeile ein "echo on" und schau Dir an, was der Batch so zu tun versucht ...
Grüße
bastla
Dann mach mal aus dem "echo off" in der ersten Zeile ein "echo on" und schau Dir an, was der Batch so zu tun versucht ...
Grüße
bastla
LÖSUNG 04.08.2010 um 23:58 Uhr
Servus,
[1/2 OT]
naja ganz ehrlich - warum du aus einer Struktur, die dir erlaubt den Interpreten zu erkennen - eine stricken willst - die dir nur den Überblick nach Jahren gestattet - versteh ich nicht.
[/1/2 OT]
passen wenigstens die Id3 Tags?
Denn dann würde ich an deiner Stelle anhand der Tags die Sortierung vornehmen.
Gruß
[1/2 OT]
naja ganz ehrlich - warum du aus einer Struktur, die dir erlaubt den Interpreten zu erkennen - eine stricken willst - die dir nur den Überblick nach Jahren gestattet - versteh ich nicht.
[/1/2 OT]
passen wenigstens die Id3 Tags?
Denn dann würde ich an deiner Stelle anhand der Tags die Sortierung vornehmen.
Gruß
LÖSUNG 05.08.2010 um 10:06 Uhr
Hallo nochmal,
@TimoBeil:
Die Ordner müssen nicht zwangsläufig nur Musik beinhalten.
Ohne Echos sieht die Ausgabe wie folgt aus:
n:\TEST>for /F %i in ('dir /b /ad 2>nul') do for / %a in ("%i\*.*") do xcopy /e "%a" "%~nxa\" && rd /s /q "%a"
n:\TEST>for / %a in ("Neuer\*.*") do xcopy /e "%a" "%~nxa\" && rd /s /q "%a"
n:\TEST>for / %a in ("Neuer\*.*") do xcopy /e "%a" "%~nxa\" && rd /s /q "%a"
n:\TEST>for / %a in ("Neuer\*.*") do xcopy /e "%a" "%~nxa\" && rd /s /q "%a"
n:\TEST>popd
die Verzeichnisstruktur war diesmal:
N:\Test\Neuer Ordner 1\Unterordner1\Unter Unter Ordner\Datei-A
N:\Test\Neuer Ordner 2\Unterordner2\Unter Unter Ordner\Datei-B
N:\Test\Neuer Ordner 3\Unterordner3\Unter Unter Ordner\Datei-C
Vielleicht liegt es am langen Dateinamen?
Grüße
@TimoBeil:
Die Ordner müssen nicht zwangsläufig nur Musik beinhalten.
Ohne Echos sieht die Ausgabe wie folgt aus:
n:\TEST>for /F %i in ('dir /b /ad 2>nul') do for / %a in ("%i\*.*") do xcopy /e "%a" "%~nxa\" && rd /s /q "%a"
n:\TEST>for / %a in ("Neuer\*.*") do xcopy /e "%a" "%~nxa\" && rd /s /q "%a"
n:\TEST>for / %a in ("Neuer\*.*") do xcopy /e "%a" "%~nxa\" && rd /s /q "%a"
n:\TEST>for / %a in ("Neuer\*.*") do xcopy /e "%a" "%~nxa\" && rd /s /q "%a"
n:\TEST>popd
die Verzeichnisstruktur war diesmal:
N:\Test\Neuer Ordner 1\Unterordner1\Unter Unter Ordner\Datei-A
N:\Test\Neuer Ordner 2\Unterordner2\Unter Unter Ordner\Datei-B
N:\Test\Neuer Ordner 3\Unterordner3\Unter Unter Ordner\Datei-C
Vielleicht liegt es am langen Dateinamen?
Grüße
LÖSUNG 05.08.2010 um 10:47 Uhr
Hallo hannesmcmaster!
Sorry - da fehlte noch ein kleines, aber wesentliches Detail ; so sollte es dann besser gehen:
Grüße
bastla
Sorry - da fehlte noch ein kleines, aber wesentliches Detail ; so sollte es dann besser gehen:
for /f "delims=" %%i in ('dir /b /ad 2^>nul') do for /d %%a in ("%%i\*.*") do echo xcopy /e "%%a" "%%~nxa\" && echo rd /s /q "%%a"
bastla
LÖSUNG 05.08.2010 um 18:47 Uhr
Hi,
also, ich weiß zwar nicht wie, aber es funktioniert.
Top! Besten Dank!!
also, ich weiß zwar nicht wie, aber es funktioniert.
Top! Besten Dank!!
LÖSUNG 05.08.2010 um 19:39 Uhr
Hallo hannesmcmaster!
Zum Wie (abgesehen davon, was oben schon angeführt ist): Durch den Zusatz "delims=" wird festgelegt, dass es kein Trennzeichen innerhalb der Ordnernamen gibt (defaultmäßig wird bei jedem Leerzeichen getrennt), wodurch die Namen jetzt richtig "am Stück" gelesen und verwendet werden ...
Grüße
bastla
Zum Wie (abgesehen davon, was oben schon angeführt ist): Durch den Zusatz "delims=" wird festgelegt, dass es kein Trennzeichen innerhalb der Ordnernamen gibt (defaultmäßig wird bei jedem Leerzeichen getrennt), wodurch die Namen jetzt richtig "am Stück" gelesen und verwendet werden ...
Grüße
bastla
Ähnliche Inhalte
Neue Wissensbeiträge
Heiß diskutierte Inhalte