
44227
25.02.2007, aktualisiert am 26.02.2007
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 52619
Url: https://administrator.de/forum/per-batch-dateien-aus-unterordner-in-den-hauptordner-verschieben-52619.html
Ausgedruckt am: 17.04.2025 um 22:04 Uhr
3 Kommentare
Neuester Kommentar
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:
@echo off
cd /d C:\\
for /f "delims=" %%i in ('dir /b /ad') do (
for /f "delims=" %%j in ('dir "%%i" /b /ad') do @echo move /y "%%i\%%j\*.*" "%%i"
)
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
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:
for /d %i in (\*.*) do cmd /c for /r "%i\" %j in (*.*) do <b>@ECHO</b> move "%j" "%i\*.*"
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...