jonnyfrieser
Goto Top

Batch-Datei für mehrere Unterordner

Hallo Batch-Experten vom Admin-Forum,

bin neu hier und blutiger Anfänger bei der Batchprogrammierung, d.h. ich hab dabei noch nie was mit Variablen und Schleifen gemacht, was ich jetzt wahrscheinlich brauche. Hoffe, ich langweile Euch nicht mit meiner eventuell trivialen Frage, aber ich fand Euer Forum dafür nach langem Suchen als das best geeignete.
Habe seit langem ein schwelendes Problem mit der Sortierung meiner Fotosammlung. Die Fotodateien befinden sich in Jahresordnern und sind mit verschiedenen Fileendungen unsortiert in Unterordnern nach Datum gespeichert.
Das sieht in etwas so aus:
scrs-11
scrs-2

Ich möchte die Dateien innerhalb der Datumsordner nach ihren Fileendungen in weitere Unterordner sortieren.
Dafür hab ich mich bis jetzt mit folgender Batchdatei geholfen:

if exist *.jpg ( md JPEG
copy *.JPG JPEG )
if exist *.CR2 ( md RAW
copy *.CR2 RAW)
if exist *.SRF ( md RAW
copy *.SRF RAW)
if exist *.MOV ( md Movie
copy *.MOV Movie
if exist *.THM copy *.THM Movie)
Exit

Das ergibt dann :
scrs-13

Ich musste aber die Batch jedes mal in das jeweilige Datumsverzeichnis kopieren. Das ging solange gut, wie ich das gleich nach jeder Fotosession erledigt habe. Jetzt sind aber doch einige Jahrgänge liegen geblieben.
Gibt es eine Möglichkeit, das über eine Batchdatei gleich für alle Datumsordner innerhalb eines Jahresordners zu erledigen?

bitte um Nachsicht, falls es so etwas ähnliches schon mal im Forum gab, hab aber nicht gleich was gefunden.

Danke, Jonny

Content-Key: 574449

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

Printed on: April 26, 2024 at 18:04 o'clock

Mitglied: 144260
Solution 144260 May 26, 2020 updated at 10:51:01 (UTC)
Goto Top
@echo off
set "root=D:\Fotos-Ordner"  
for /d %%a in ("%root%\*") do (  
	for /d %%b in ("%%~a\*") do (  
		for %%d in (JPEG RAW MOVIE) do (if not exist "%%~b\%%~d" (md "%%~b\%%~d"))  
		copy "%%~b\*.jpg" "%%~b\JPEG" >nul 2>&1  
		copy "%%~b\*.srf" "%%~b\RAW" >nul 2>&1  
		copy "%%~b\*.cr2" "%%~b\RAW" >nul 2>&1  
		copy "%%~b\*.mov" "%%~b\MOVIE" >nul 2>&1  
		copy "%%~b\*.thm" "%%~b\MOVIE" >nul 2>&1  
	)
)
bitte um Nachsicht, falls es so etwas ähnliches schon mal im Forum gab, hab aber nicht gleich was gefunden.
Hier werden sie geholfen
Tutorial zur FOR-Schleife
Musterlösungen: Dateien verschieben abhängig vom Teil des Dateinamens
Member: JonnyFrieser
JonnyFrieser May 26, 2020 at 18:55:02 (UTC)
Goto Top
Hallo Killpid, danke für die schnelle Hilfe, komme noch nicht ganz klar damit. Mir fehlen eben noch zu viele Grundlagen. Werde erstmal hier im Forum die Anleitungen dafür durchgehen.
Aber erstmal Danke!

Gruß, Jonny
Member: JonnyFrieser
JonnyFrieser May 26, 2020 at 20:23:13 (UTC)
Goto Top
Hallo killpid,

habs jetzt zum laufen gekriegt. Hat für einen Testordner einwandfrei funktioniert. Weil ich mir jetzt sicher war, hab ich nun nur noch den copy-Befehl durch move ersetzt. Macht ja sonst keinen Sinn.

vielen Dank noch mal und ich stöber noch weiter rum in Bibers Klasse Workshop für Batch-Newbies

Gruß, Jonny
Member: JonnyFrieser
JonnyFrieser May 27, 2020 at 20:53:55 (UTC)
Goto Top
Hallo Killpid,

hab jetzt die Batchdatei schon an einigen Jahrgängen scharf ausprobiert. Mir ist nur aufgefallen, das es doch anders funktioniert, als in meiner Anfänger-Version. Bei mir hab ich ja die Dateiversionen abgefragt und die Unterverzeichnisse nur angelegt, wenn die entsprechenden Files auch im Ordner vorhanden waren.
Kannst Du mir noch einen Vorschlag machen, wie ich die Schleife mit der exist-Abfrage noch mal ändern kann, damit die Unterverzeichnisse auch nur angelegt werden, wenn die jeweiligen Dateitypen auch da sind? Ich bin inzwischen noch nicht so firm mit den Variablen.

Danke+Gruß, Jonny
Mitglied: 144260
144260 May 28, 2020 updated at 05:18:06 (UTC)
Goto Top
Ohuuuu ist ja auch soooo schwierig .......nee nee nee das gibt Abzüg