Mit DIR nach Bild aufgenommen am sortieren
Hallo Leute,
ich hoffe ihr könnt mir helfen. Im Windows-Explorer kann man sich anzeigen lassen wann ein Bild aufgenommen wurde. Mit DIR kann man laut Beschreibung aber nur nach dem Datum der letzten Änderung sortieren was ja schon evtl durch kopieren bzw brennen verändert wird. Kann man die Windows-Funktion irgendwie in einer Batch nachbauen? Ich möchte Bilder anhand dieses Kriteriums sortieren und kopieren.. Welche andere Programmiersprache wäre dazu geeignet?
ich hoffe ihr könnt mir helfen. Im Windows-Explorer kann man sich anzeigen lassen wann ein Bild aufgenommen wurde. Mit DIR kann man laut Beschreibung aber nur nach dem Datum der letzten Änderung sortieren was ja schon evtl durch kopieren bzw brennen verändert wird. Kann man die Windows-Funktion irgendwie in einer Batch nachbauen? Ich möchte Bilder anhand dieses Kriteriums sortieren und kopieren.. Welche andere Programmiersprache wäre dazu geeignet?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 97954
Url: https://administrator.de/contentid/97954
Ausgedruckt am: 26.11.2024 um 07:11 Uhr
5 Kommentare
Neuester Kommentar
Hallo,
brauchst Du gar nicht. Im Windows-Explorer die Ansicht auf Details stellen. Anschließend per Rechtsklick auf Sortierleiste (wo Name usw. steht) klicken. Schon erscheint eine Liste mit zusätlich einblendbaren Informationen. Ganz unten auf Weitere klicken und schon kann man viele zusätzliche Informationen immer anzeigen lassen. Unter anderem sogar Bild aufgenommen an usw.
mfg
brauchst Du gar nicht. Im Windows-Explorer die Ansicht auf Details stellen. Anschließend per Rechtsklick auf Sortierleiste (wo Name usw. steht) klicken. Schon erscheint eine Liste mit zusätlich einblendbaren Informationen. Ganz unten auf Weitere klicken und schon kann man viele zusätzliche Informationen immer anzeigen lassen. Unter anderem sogar Bild aufgenommen an usw.
mfg
Hallo Haegar75!
Falls Du die Datumsschreibweise "JJJJ-MM-TT" bevorzugst, verwende folgende Zeile als Ersatz für die obige Zeile 9:
Ähnlich wie in dem von Dir verlinkten Beitrag wird auch in diesem Batch zur Vorsicht der Verschiebebefehl durch das vorangestellte "echo" entschärft (der Befehl wird nur angezeigt, aber nicht ausgeführt) - das Erstellen der Ordner im Zielpfad sollte aber eigentlich keine Probleme bewirken und erfolgt daher tatsächlich.
Das im Batch enthaltene VBScript setzt XP voraus - unter Vista habe ich nicht getestet, es könnte aber in der Zeile 8 der Wert 12 anstelle von 25 erforderlich sein (siehe Auflistung hier) ...
Grüße
bastla
Aber DIR war nun mal schon lange vor den Digitalkameras da..
... was sich aber durch ein wenig VBScript ausgleichen lassen sollte :@echo off & setlocal
set "QuellDir=D:\Fotos\ungeordnet"
set "Typ=jpg"
set "ZielDirRoot=D:\Fotos\sortiert"
set G=%temp%\GetDatePictureTaken.vbs
> %G% echo Set Fld=CreateObject("Shell.Application").Namespace(WScript.Arguments(0))
>>%G% echo For Each F In Fld.Items: WScript.Echo """"^&F.Path^&""" " ^& Fld.GetDetailsOf(F,25):Next
for /f "tokens=1-2" %%a in ('cscript //nologo %G% "%QuellDir%"^|findstr /i ".%Typ%"') do (
if not exist "%ZielDirRoot%\%%b" md "%ZielDirRoot%\%%b"
echo move %%a "%ZielDirRoot%\%%b"
)
>>%G% echo For Each F In Fld.Items: D=Fld.GetDetailsOf(F,25): WScript.Echo """"^&F.Path^&""" " ^& Mid(D,7,4)^&"-"^&Mid(D,4,2)^&"-"^&Left(D,2):Next
Das im Batch enthaltene VBScript setzt XP voraus - unter Vista habe ich nicht getestet, es könnte aber in der Zeile 8 der Wert 12 anstelle von 25 erforderlich sein (siehe Auflistung hier) ...
Grüße
bastla
Hallo Haegar75!
Wenn Du die andere Datumsschreibweise bevorzugst (ist mir schon wegen der besseren Sortierbarkeit sympathischer), dann so:
In beiden Fällen ist die "for"-Schleife auch noch anzupassen, damit die Stunde als %%c und die Minute als %%d verwendet werden können:
In der Version mit Berücksichtigung der Unterordner wäre dann auch noch (wie oben gezeigt) "%QuellDir%" durch "%%i" zu ersetzen.
Bei Unterteilung auch nach Stunden wäre das Ziel (für "md" und "move") jeweils
Grüße
bastla
Wie kann ich die Zeile 11 ändern, dass evtl. auch Unterordner mit durchforstet werden?
Das Einfachste wäre es, eine "for"-Schleife "herumzuwickeln" - etwa:for /f "delims=" %%i in ('dir /s /b /ad "%QuellDir%"') do (
for /f "tokens=1-2" %%a in ('cscript //nologo %G% "%%i"^|findstr /i ".%Typ%"') do (
if not exist "%ZielDirRoot%\%%b" md "%ZielDirRoot%\%%b"
echo move %%a "%ZielDirRoot%\%%b"
)
)
Ich würde noch gerne optional die Dateien nach der "Stunde" sortiert in Verzeichnissen unterhalb des Tages ablegen.
Dazu muss die Rückgabe des VBScripts etwas angepasst werden - die Zeile 9 müüste dann etwa so ausssehen:>>%G% echo For Each F In Fld.Items: WScript.Echo """"^&F.Path^&""" " ^& Replace(Fld.GetDetailsOf(F,25),":"," "):Next
>>%G% echo For Each F In Fld.Items: D=Fld.GetDetailsOf(F,25): WScript.Echo """"^&F.Path^&""" " ^&Mid(D,7,4)^&"-"^&Mid(D,4,2)^&"-"^&Left(D,2)^&Replace(Mid(D,11),":"," "):Next
for /f "tokens=1-4" %%a in ('cscript //nologo %G% "%QuellDir%"^|findstr /i ".%Typ%"') do (
Bei Unterteilung auch nach Stunden wäre das Ziel (für "md" und "move") jeweils
"%ZielDirRoot%\%%b\%%c"
Grüße
bastla