Batch Datei: zwei variable Ordnertiefen Befehl ausführen
Hallo,
ich habe eine Programmierung erstellt, die Bilder in einem Ordner in neue Unterordner nach Datum sortiert. Die Bilder befinden sich in unterschiedlich variablen Unterordner. Beispielweise: C:\Urlaub\Bilder\Jana\Spanien , C:\Urlaub\Bilder\Jana\Polen, C:\Urlaub\Bilder\Max\Spanien; usw.
Also das die letzten beiden Ebenen sind variabel.
Mein Code sieht aktuell so aus....
@echo off &setlocal
set "root=C:\Bilder\Urlaub"
for /d %%a in ("%root%\*") do (
for %%b in ("%%a\*.*") do for /f "tokens=1-3 delims=. " %%c in ("%%~tb") do (
if not exist "%%a\%%e_%%d_%%c" md "%%a\%%e_%%d_%%c"
Move "%%b" "%%a\%%e_%%d_%%c\"
)
)
ich habe eine Programmierung erstellt, die Bilder in einem Ordner in neue Unterordner nach Datum sortiert. Die Bilder befinden sich in unterschiedlich variablen Unterordner. Beispielweise: C:\Urlaub\Bilder\Jana\Spanien , C:\Urlaub\Bilder\Jana\Polen, C:\Urlaub\Bilder\Max\Spanien; usw.
Also das die letzten beiden Ebenen sind variabel.
Mein Code sieht aktuell so aus....
@echo off &setlocal
set "root=C:\Bilder\Urlaub"
for /d %%a in ("%root%\*") do (
for %%b in ("%%a\*.*") do for /f "tokens=1-3 delims=. " %%c in ("%%~tb") do (
if not exist "%%a\%%e_%%d_%%c" md "%%a\%%e_%%d_%%c"
Move "%%b" "%%a\%%e_%%d_%%c\"
)
)
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 940939017
Url: https://administrator.de/forum/batch-datei-zwei-variable-ordnertiefen-befehl-ausfuehren-940939017.html
Ausgedruckt am: 12.05.2025 um 04:05 Uhr
7 Kommentare
Neuester Kommentar

Da fehlt die Frage ...
Damit ist es egal wie tief die Ordner verschachtelt sind ...
Damit ist es egal wie tief die Ordner verschachtelt sind ...
@echo off &setlocal
set "root=C:\Bilder\Urlaub"
for /f "delims=" %%a in ('dir /b /s /a-d "%root%\*.*"') do for /f "tokens=1-3 delims=. " %%b in ("%%~ta") do (
if not exist "%%~dpa%%d_%%c_%%b" md "%%~dpa%%d_%%c_%%b"
move "%%a" "%%~dpa%%d_%%c_%%b"
)

Zitat von @vgsh20:
Also ich habe den Code ausprobiert und er funktioniert. Jedoch ist in meinem Fall die Ordnertiefe wichtig, da in diesen Ordnern täglich neue Bilder reinkommen und wenn ich die Batchdatei starte erstellt er mir in bereits erstellten Unterordnern noch einen weiteren Unterordner mit dem selben Namen.
Also ich habe quasi im Ordner 2021_07_08 nochmal einen Ordner mit dem selben Namen und darin befinden sich dann die Bilder.
Deshalb will ich das die Tiefe, in der das Programm reingehen soll beschränkt ist....
Ich hoffe du kannst mir da weiterhelfen.
Dann nimmst du einfach die Variante aus dem letzten Post und fügst einfach zwischen der ersten und zweiten eine For-Schleife eine weitere Ebene mit for /d ein as simple as ...Also ich habe den Code ausprobiert und er funktioniert. Jedoch ist in meinem Fall die Ordnertiefe wichtig, da in diesen Ordnern täglich neue Bilder reinkommen und wenn ich die Batchdatei starte erstellt er mir in bereits erstellten Unterordnern noch einen weiteren Unterordner mit dem selben Namen.
Also ich habe quasi im Ordner 2021_07_08 nochmal einen Ordner mit dem selben Namen und darin befinden sich dann die Bilder.
Deshalb will ich das die Tiefe, in der das Programm reingehen soll beschränkt ist....
Ich hoffe du kannst mir da weiterhelfen.
Alternativ kann man auch mit findstr die Dateien in Datums-Ordner mit obigem Skript ausfiltern.
@echo off &setlocal
set "root=C:\Bilder\Urlaub"
for /f "delims=" %%a in ('dir /b /s /a-d "%root%\*.*" ^| findstr /ivr "[1-2][0-9][0-9][0-9]_[0-1][0-9]_[0-3][0-9]"') do for /f "tokens=1-3 delims=. " %%b in ("%%~ta") do (
if not exist "%%~dpa%%d_%%c_%%b" md "%%~dpa%%d_%%c_%%b"
move "%%a" "%%~dpa%%d_%%c_%%b"
)

s.o.
me.quit()
me.quit()