Anzeige

Am Puls von Microsoft

Anzeige

[gelöst] Batch Foto sortieren

Wanderer_DD

treuer Stammgast
Hallo,
ich möchte mit einer Batch-Befehl Fotos sortieren ?
Alle Fotos die größer als 2 MB sind in Datei 2 kopieren.
Alle Fotos die kleiner als 2 MB sind in Datei 1 kopieren.
Geht das überhaupt mit einem Batch-Befehl und wie müsste dieser aussehen ?
Gruss Werner
 
Anzeige
Was meinst du mit "in Datei 2 kopieren"? In einen bestimmten Ordner? Das geht direkt mit der Windows Suche. Einfach den Ordner öffnen und oben rechts in Suchmaske z.B. eingeben
Damit werden dir alle Bilder mit weniger als 2MB angezeigt. (Wahlweise mit oder ohne Unterordner. Kannst du oben in der Menüleiste umschalten.)

Ich empfehle vor solchen Aktionen auf jeden Fall eine aktuelle Datensicherung zu haben / machen.

p.s. den Fall Foto = 2 MB hast du nicht berücksichtigt.
 
Danke,
bei Eingabe des Befehles:
werden die Fotos der größe nachsortiert.
Die größer als 2MB sind oben, die kleiner als 2MB sind im unteren Teil des Ordner.
=2MB ist nicht nötig. Die Fotos sind um einiges kleiner oder größer als 2 MB.
Der Ansatz ist schon erst mal gut.
Das mit der Kopie in den Unterordner habe ich noch nicht begriffen.
Gruss Werner
 
Ich habe da mal was zusammengefrickelt. In den Zeilen 2 bis 4 müssen natürlich die Pfadangaben eingetragen werden.
Code:
rem @echo off & setlocal
set "Quelle=<Quellordner>"
set "Ziel1=<Zielordner_klein>"
set "Ziel2=<Zielordner_gross>"
set "Size=2000000"
for /f "delims=" %%i in ('dir /s /b "%Quelle%\*.*"') do if %%~zi lss %Size% call :ProcessFile "%%i" "%Ziel1%" "%Quelle%"
for /f "delims=" %%i in ('dir /s /b "%Quelle%\*.*"') do if %%~zi geq %Size% call :ProcessFile "%%i" "%Ziel2%" "%Quelle%"
goto :eof
:ProcessFile
set "Quellpfad=%~f1"
call set "RelPfad=%%Quellpfad:%~3=%%"
xcopy %1 "%~2%RelPfad%*" /cqrh >nul
goto :eof
 
Jetzt fehlt noch die korrekte Pfadangabe im Programm.
Habe meine Ordner nach Deinen Angaben umbenannt. Bei mir : "D:\Quellordner"
Wie füge ich diese ein ?
 
Zuletzt bearbeitet:
Ich nehme an, du meinst das so:
Code:
rem @echo off & setlocal
set "[B]Quelle=D:\Quellordner[/B]"
set "Ziel1=<Zielordner_klein>"
set "Ziel2=<Zielordner_gross>"
set "Size=2000000"
for /f "delims=" %%i in ('dir /s /b "%Quelle%\*.*"') do if %%~zi lss %Size% call :ProcessFile "%%i" "%Ziel1%" "%Quelle%"
for /f "delims=" %%i in ('dir /s /b "%Quelle%\*.*"') do if %%~zi geq %Size% call :ProcessFile "%%i" "%Ziel2%" "%Quelle%"
goto :eof
:ProcessFile
set "Quellpfad=%~f1"
call set "RelPfad=%%Quellpfad:%~3=%%"
xcopy %1 "%~2%RelPfad%*" /cqrh >nul
goto :eof

Trage einfach deine Pfade so wie in der zweiten Zeile ein. Also z. B. D:\Bilder_gross und D:\Bilder_klein.
 
Das ist die Dateigröße in Bytes, nach der entschieden wird. Exakt sind 2 MB 2097152 Bytes. Du kannst den Wert ja ändern, wenn es exakt sein soll.
lss im Vergleicher der beiden for Zeilen bedeutet kleiner als, geq größer oder gleich.
 
Klar das sind 6 Nullen.
Nochmals vielen Dank für die Hilfe.
Frage: Kann man auch auf die EXIF Daten des Foto zugreifen und diese zur Bearbeitung nutzen ?
Mir geht es um die Daten: "ExifImageWithe"
Foto_Format_1.jpg
Anbei ein Foto.
Gruss Werner
 
Zuletzt bearbeitet:
Anzeige
Oben