Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Mit DIR nach Bild aufgenommen am sortieren

Frage Entwicklung Batch & Shell

Mitglied: Haegar75

Haegar75 (Level 1) - Jetzt verbinden

26.09.2008, aktualisiert 18.10.2012, 7146 Aufrufe, 5 Kommentare

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?
Mitglied: mgoelike
26.09.2008 um 20:21 Uhr
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.

Mit freundlichen Grüßen
Bitte warten ..
Mitglied: Haegar75
26.09.2008, aktualisiert 18.10.2012
Ja, das ist mir schon klar dass das im Windows-Explorer geht. Wollte aber sowas machen http://www.administrator.de/forum/bilder-automatisch-sortieren-per-batc ...
und dafür die genaue Information der Bildaufnahme nutzen. Aber DIR war nun mal schon lange vor den Digitalkameras da..
Bitte warten ..
Mitglied: bastla
26.09.2008 um 22:53 Uhr
Hallo Haegar75!

Aber DIR war nun mal schon lange vor den Digitalkameras da..
... was sich aber durch ein wenig VBScript ausgleichen lassen sollte :
01.
@echo off & setlocal 
02.
 
03.
set "QuellDir=D:\Fotos\ungeordnet" 
04.
set "Typ=jpg" 
05.
set "ZielDirRoot=D:\Fotos\sortiert" 
06.
 
07.
set G=%temp%\GetDatePictureTaken.vbs 
08.
> %G% echo Set Fld=CreateObject("Shell.Application").Namespace(WScript.Arguments(0)) 
09.
>>%G% echo For Each F In Fld.Items: WScript.Echo """"^&F.Path^&""" " ^& Fld.GetDetailsOf(F,25):Next 
10.
 
11.
for /f "tokens=1-2" %%a in ('cscript //nologo %G% "%QuellDir%"^|findstr /i ".%Typ%"') do ( 
12.
    if not exist "%ZielDirRoot%\%%b" md "%ZielDirRoot%\%%b" 
13.
    echo move %%a "%ZielDirRoot%\%%b"	 
14.
)
Falls Du die Datumsschreibweise "JJJJ-MM-TT" bevorzugst, verwende folgende Zeile als Ersatz für die obige Zeile 9:
01.
>>%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
Ä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
Bitte warten ..
Mitglied: Haegar75
27.09.2008 um 11:52 Uhr
Hi!Danke! Funktionierte auf Anhieb!Das VBScript wird mir immer symphatischer!Ist ja der Hass was für Attribute es bei Vista alle gibt.
Wie kann ich die Zeile 11 ändern, dass evtl. auch Unterordner mit durchforstet werden?
Ich würde noch gerne optional die Dateien nach der "Stunde" sortiert in Verzeichnissen unterhalb des Tages ablegen. Evtl. mit MsgBox Typ 4 abfragen.. Hintergrund: Fotos von z.B Familienfesten die mit mehreren Kameras gemacht wurden in einen zeitlichen Verlauf zu bekommen. (das nutzt natürlich nix wenn so ein Hämpel das Datum nicht eingestellt hat an der Kamera.
Bitte warten ..
Mitglied: bastla
27.09.2008 um 12:38 Uhr
Hallo Haegar75!

Wie kann ich die Zeile 11 ändern, dass evtl. auch Unterordner mit durchforstet werden?
Das Einfachste wäre es, eine "for"-Schleife "herumzuwickeln" - etwa:
01.
for /f "delims=" %%i in ('dir /s /b /ad "%QuellDir%"') do ( 
02.
    for /f "tokens=1-2" %%a in ('cscript //nologo %G% "%%i"^|findstr /i ".%Typ%"') do ( 
03.
        if not exist "%ZielDirRoot%\%%b" md "%ZielDirRoot%\%%b" 
04.
        echo move %%a "%ZielDirRoot%\%%b" 
05.
06.
)
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:
01.
>>%G% echo For Each F In Fld.Items: WScript.Echo """"^&F.Path^&""" " ^& Replace(Fld.GetDetailsOf(F,25),":"," "):Next
Wenn Du die andere Datumsschreibweise bevorzugst (ist mir schon wegen der besseren Sortierbarkeit sympathischer), dann so:
01.
>>%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
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:
01.
for /f "tokens=1-4" %%a in ('cscript //nologo %G% "%QuellDir%"^|findstr /i ".%Typ%"') do (
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
01.
"%ZielDirRoot%\%%b\%%c"
Grüße
bastla
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Windows Netzwerk
gelöst Frage zu den Netzwerkfreigaben mit Bild (8)

Frage von M.Marz zum Thema Windows Netzwerk ...

Python
gelöst Python requests JSON Objekt + Bild versenden (4)

Frage von nullacht15 zum Thema Python ...

Grafikkarten & Monitore
älterer Compaq Laptop mit Windows 10 bei Anschluss HDMI Monitor Bild weg (4)

Frage von Andy1805 zum Thema Grafikkarten & Monitore ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...