gelöst Per Batch dateien aus Unterordner in den Hauptordner verschieben
Hallo erstmal,
ich hoffe, dass ist der richtige Ort, um diese Frage zu stellen.
In meiner Verzeichnisstruktur habe ich ca. 100 Ordner, von den manche einen Unterordner haben und manche nicht.
Ich möchte gerne eine Batch schreiben, die alle 100 Hauptordner durchläuft und wenn in einem Hauptordner ein Unterordner vorhanden ist, die Dateien, die im Unterordner sind in den Hauptordner verschiebt.
Geht so was auf einem Rechner, auf dem WinXp Home läuft?
Danke im Voraus,
Nermin
ich hoffe, dass ist der richtige Ort, um diese Frage zu stellen.
In meiner Verzeichnisstruktur habe ich ca. 100 Ordner, von den manche einen Unterordner haben und manche nicht.
Ich möchte gerne eine Batch schreiben, die alle 100 Hauptordner durchläuft und wenn in einem Hauptordner ein Unterordner vorhanden ist, die Dateien, die im Unterordner sind in den Hauptordner verschiebt.
Geht so was auf einem Rechner, auf dem WinXp Home läuft?
Danke im Voraus,
Nermin
3 Antworten
- LÖSUNG bastla schreibt am 25.02.2007 um 21:52:23 Uhr
- LÖSUNG Biber schreibt am 25.02.2007 um 22:34:04 Uhr
- LÖSUNG 44227 schreibt am 26.02.2007 um 07:12:47 Uhr
LÖSUNG 25.02.2007 um 21:52 Uhr
Hallo Hajvazovic und willkommen im Forum!
Wenn es nur eine Unterordnerebene gibt (also die Unterordner nicht selbst noch weitere Unterordner haben), könntest Du folgenden Batch verwenden:
Diese Zeilen speicherst Du als "MoveUp.bat" (oder mit einem Namen, der Dir besser gefällt, solange er auf ".bat" endet) in das Hauptverzeichnis (den Ordner, in dem sich Deine 100 Ordner befinden, zB "C:\"). Dieser Ordner muss auch in der zweiten Zeile nach dem "cd /d" stehen.
Wenn Du die gespeicherte Batchdatei ausführst, wird Dir zunächst nur angezeigt, was passieren würde (zum Abbrechen die Tastenkombination "Strg"-"c" verwenden). Sofern der Ablauf für Dich ok ist, entfernst Du aus der vierten Batchzeile das "@echo " zwischen dem "do" und dem "move". Ab jetzt verschiebt die Batchdatei wirklich.
Grüße
bastla
Wenn es nur eine Unterordnerebene gibt (also die Unterordner nicht selbst noch weitere Unterordner haben), könntest Du folgenden Batch verwenden:
01.
@echo off
02.
cd /d C:\\
03.
04.
for /f "delims=" %%i in ('dir /b /ad') do (
05.
for /f "delims=" %%j in ('dir "%%i" /b /ad') do @echo move /y "%%i\%%j\*.*" "%%i"
06.
)
Wenn Du die gespeicherte Batchdatei ausführst, wird Dir zunächst nur angezeigt, was passieren würde (zum Abbrechen die Tastenkombination "Strg"-"c" verwenden). Sofern der Ablauf für Dich ok ist, entfernst Du aus der vierten Batchzeile das "@echo " zwischen dem "do" und dem "move". Ab jetzt verschiebt die Batchdatei wirklich.
Grüße
bastla
LÖSUNG 25.02.2007 um 22:34 Uhr
Moin Hajvazovic,
willkommen im Forum.
Ich halte Deinen Plan nicht für bis ins Detail ausgefeilt, aber handwerklich lösbar ist es mit folgender Zeile vom CMD-Prompt:
Einschränkungen:
- kann relativ gefahrlos abgefeuert werden, durch das @ECHO zeigt die Anweisung nur, was sie tun würde... nur Simulation.
- es wird maximal in die erste Unterverzeichnisebene (i.e. "D:\temp" oder "C:\Programme") verschoben, nicht in die Root-Ebene C:\ oder D:\
- der MOVE-Befehl ist ohne Schalte /y aufgerufen und würde deshalb keine vorhandenen Dateien löschen.
- leere Verzeichnisse werden nicht gelöscht. Dafür kann später eine globale "FOR /R .....RD "%i""-Anweisung erfolgen. Wird bei Bedarf nachgereicht.
Meine Empfehlung:
- Schau Dir bitte erst mal so an, was passieren würde, wenn Deine Anforderung wortwörtlich batchmäßig umgesetzt werden würde.
[Anmerkung: "Batch" hat die gleiche sprachliche Wurzel wie das süddeutsche "Batschkopp" - der führt halt alles aus, was Du ihm sagst.]
- oder wende den obigen Befehl selektiv auf einzelne Verzeichnisse an, wo Du Dir ganz sicher bist, dass dort nur Daten (und keine Programme mit angelegten Verzeichnisstrukturen vorhanden sind
Beispiel: "for /d %i in (D:\unkritisches\Subdir\*.*) do ...."
Gruss
Biber
[Edit] Upps. Moin bastla.... Du tippst einfach schneller als ich... [/Edit]
willkommen im Forum.
Ich halte Deinen Plan nicht für bis ins Detail ausgefeilt, aber handwerklich lösbar ist es mit folgender Zeile vom CMD-Prompt:
01.
for /d %i in (\*.*) do cmd /c for /r "%i\" %j in (*.*) do <b>@ECHO</b> move "%j" "%i\*.*"
- kann relativ gefahrlos abgefeuert werden, durch das @ECHO zeigt die Anweisung nur, was sie tun würde... nur Simulation.
- es wird maximal in die erste Unterverzeichnisebene (i.e. "D:\temp" oder "C:\Programme") verschoben, nicht in die Root-Ebene C:\ oder D:\
- der MOVE-Befehl ist ohne Schalte /y aufgerufen und würde deshalb keine vorhandenen Dateien löschen.
- leere Verzeichnisse werden nicht gelöscht. Dafür kann später eine globale "FOR /R .....RD "%i""-Anweisung erfolgen. Wird bei Bedarf nachgereicht.
Meine Empfehlung:
- Schau Dir bitte erst mal so an, was passieren würde, wenn Deine Anforderung wortwörtlich batchmäßig umgesetzt werden würde.
[Anmerkung: "Batch" hat die gleiche sprachliche Wurzel wie das süddeutsche "Batschkopp" - der führt halt alles aus, was Du ihm sagst.]
- oder wende den obigen Befehl selektiv auf einzelne Verzeichnisse an, wo Du Dir ganz sicher bist, dass dort nur Daten (und keine Programme mit angelegten Verzeichnisstrukturen vorhanden sind
Beispiel: "for /d %i in (D:\unkritisches\Subdir\*.*) do ...."
Gruss
Biber
[Edit] Upps. Moin bastla.... Du tippst einfach schneller als ich... [/Edit]
LÖSUNG 26.02.2007 um 07:12 Uhr
Moin Bastla, moin Biber,
erstmal vielen Dank für dei schnellen Antworten.
Ich werde es heute ausprobieren und geben dann rückmeldung.
Viele Grüße,
Nermin
erstmal vielen Dank für dei schnellen Antworten.
Ich werde es heute ausprobieren und geben dann rückmeldung.
Viele Grüße,
Nermin
Ähnliche Inhalte
Neue Wissensbeiträge
Heiß diskutierte Inhalte