BATCH dateien von sub sub-sub folder in hauptordner verschieben und löschen
Hallo,
ich habe folgendes Problem: Ich habe hier viele Ordner mit diversen Unterordnern und Dateien drin. Quasi
Nun möchte ich alle Dateien, die enthalten sind, in den jeweiligen ersten Unterordner verschieben:
Ich habe nun stundenlang gesucht und herumprobiert, jedoch wirklich keine Lösung gefunden.
Mein letzter Versuch war:
Das klappt dann aber nur, wenn der Unter-Unterordner gleich heisst. Sobald hier ein anderer da ist, wird das Übersprungen.
Bzw. geht das überhaupt, was ich vor habe?
ich habe folgendes Problem: Ich habe hier viele Ordner mit diversen Unterordnern und Dateien drin. Quasi
mainfolder\sub1\file.txt
mainfolder\sub1\file2.txt
mainfolder\sub1\file3.txt
mainfolder\sub2\file.txt
mainfolder\sub2\file2.txt
mainfolder\sub2\file3.txt
mainfolder\sub3\sub4\file.txt
mainfolder\sub3\sub4\file2.txt
mainfolder\sub3\sub4\file3.txt
mainfolder\sub3\sub4\subx\file.txt
mainfolder\sub3\sub4\subx\file2.txt
mainfolder\sub3\sub4\subx\file3.txt
Nun möchte ich alle Dateien, die enthalten sind, in den jeweiligen ersten Unterordner verschieben:
mainfolder\sub1\file.txt
mainfolder\sub1\file2.txt
mainfolder\sub1\file3.txt
mainfolder\sub2\file.txt
mainfolder\sub2\file2.txt
mainfolder\sub2\file3.txt
mainfolder\sub3\file.txt
mainfolder\sub3\file2.txt
mainfolder\sub3\file3.txt
mainfolder\sub3\file.txt
mainfolder\sub3\file2.txt
mainfolder\sub3\file3.txt
Ich habe nun stundenlang gesucht und herumprobiert, jedoch wirklich keine Lösung gefunden.
Mein letzter Versuch war:
for /f "delims=" %%i in ('dir /b /ad') do if exist "%%i\%%i\" (
move "%%i\%%i\*.*" "%%i"
rd "%%i\%%i"
)
Das klappt dann aber nur, wenn der Unter-Unterordner gleich heisst. Sobald hier ein anderer da ist, wird das Übersprungen.
Bzw. geht das überhaupt, was ich vor habe?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 4959639621
Url: https://administrator.de/forum/batch-dateien-von-sub-sub-sub-folder-in-hauptordner-verschieben-und-loeschen-4959639621.html
Ausgedruckt am: 27.03.2025 um 07:03 Uhr
4 Kommentare
Neuester Kommentar

Batch
PS
@echo off
set "root=c:\Mainfolder"
for /d %%a in ("%root%\*") do (
for /f "delims=" %%b in ('dir /b /s /a-d "%%a"') do move "%%b" "%%a\" 2>nul
for /d %%b in ("%%a\*") do rd /s /q "%%b"
)
$root = "c:\mainfolder"
foreach($folder in Get-ChildItem $root -Directory){
Get-ChildItem $folder.Fullname -File -Recurse | move-item -Destination $folder.Fullname
Get-ChildItem $folder.Fullname -Directory | remove-item -recurse -force
}
Moin,

Noch ein kurzer Hinweis, bei dem ich aber nicht weiß ob er relevant ist:
Gruß
Doskias
Zitat von @subfolder:
WOW. Vielen Lieben Dank für die Unterstützung. Ich habe bereits diese Antwort als Lösung markiert.
Unterstützung != Lösung WOW. Vielen Lieben Dank für die Unterstützung. Ich habe bereits diese Antwort als Lösung markiert.
Noch ein kurzer Hinweis, bei dem ich aber nicht weiß ob er relevant ist:
Get-ChildItem $folder.Fullname -Directory | remove-item -recurse -force
Das ist etwas "gefährlich". Sollten aus irgendeinem Grund (zum Beispiel, weil es die Datei im Zielorder schon gibt), Dateien nicht verschoben werden können, dann löscht der Befehl den Ordner inkl. der dort liegenden Dateien. Ich persönlich würde noch über eine Prüfung nachdenken, ob der Ordner leer ist, bevor ich ihn lösche.Gruß
Doskias