hasselnuss31

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\"
)
)
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

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

148934
148934 08.07.2021 aktualisiert um 12:12:16 Uhr
Goto Top
Da fehlt die Frage ...

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"  
)
Hasselnuss31
Hasselnuss31 08.07.2021 um 11:47:17 Uhr
Goto Top
Sorry, habs vergessen.... Danke schon mal im voraus!
Hasselnuss31
Hasselnuss31 08.07.2021 um 11:57:24 Uhr
Goto Top
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.
148934
Lösung 148934 08.07.2021 aktualisiert um 12:11:48 Uhr
Goto Top
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 ...
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"  
)
Hasselnuss31
Hasselnuss31 08.07.2021 um 12:11:17 Uhr
Goto Top
Ich hatte das bereits so probiert... Jedoch hat er mir da nicht den Befehl dann ausgeführt, obwohl er die Ordner gefunden hatte.

@echo off setlocal
set "root=C:\Bilder\Urlaub"
for /d %%a in ("%root%\*") do (
for /d %%g in ("%%a/*") do (
echo a-Variable: %%a
echo g-Variable: %%g
for %%b in ("%%g\*.jpg") do for /f "tokens=1-3 delims=. " %%c in ("%%~tb") do (
if not exist "%%g\%%e_%%d_%%c" md "%%g\%%e_%%d_%%c"
Move "%%b" "%%g\%%e_%%d_%%c\"
)
)
)
pause
148934
148934 08.07.2021 aktualisiert um 12:13:06 Uhr
Goto Top
s.o.

me.quit()
Hasselnuss31
Hasselnuss31 08.07.2021 um 12:25:48 Uhr
Goto Top
DANKE DIR! face-smile