hasselnuss31
Goto Top

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\"
)
)

Content-Key: 940939017

Url: https://administrator.de/contentid/940939017

Printed on: April 19, 2024 at 06:04 o'clock

Mitglied: 148934
148934 Jul 08, 2021 updated at 10:12:16 (UTC)
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"  
)
Member: Hasselnuss31
Hasselnuss31 Jul 08, 2021 at 09:47:17 (UTC)
Goto Top
Sorry, habs vergessen.... Danke schon mal im voraus!
Member: Hasselnuss31
Hasselnuss31 Jul 08, 2021 at 09:57:24 (UTC)
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.
Mitglied: 148934
Solution 148934 Jul 08, 2021 updated at 10:11:48 (UTC)
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"  
)
Member: Hasselnuss31
Hasselnuss31 Jul 08, 2021 at 10:11:17 (UTC)
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
Mitglied: 148934
148934 Jul 08, 2021 updated at 10:13:06 (UTC)
Goto Top
s.o.

me.quit()
Member: Hasselnuss31
Hasselnuss31 Jul 08, 2021 at 10:25:48 (UTC)
Goto Top
DANKE DIR! face-smile