;################################################### ;### Intro ;################################################### ProgrammName = MetaHexe ; lese den Pfad zu exiv2.exe aus der ini-Datei aus IniRead, Exiv2Pfad, settings.ini, Exiv2, Key ; lese den Default-Pfad (aus dem die zu taggenden Bilder herausgesucht werden sollen) aus der ini-Datei aus IniRead, DefaultPfad, settings.ini, DefaultP, Key ; wenn der Pfad zu exiv2.exe nicht gefunden wird, Aufforderung diesen anzugeben IfNotExist, %Exiv2Pfad% { MsgBox, 0, %ProgrammName%, Die Datei mit dem Pfad zu exiv2 kann nicht gefunden werden.`n`nBitte wähle nachfolgend den Pfad zu exiv2.exe aus.`n`nStarte anschließend das Programm neu! ;nutze als Startverzeichnis zur Dateiauswahl C:\ FileSelectFile, Exiv2Pfad, 1, C:\, Bitte wähle den Speicherort von exiv2.exe aus!, exiv2.exe IniWrite, %Exiv2Pfad%, settings.ini, Exiv2, Key ExitApp } ; wenn der Defaultpfad zu den Bildern nicht gefunden wird, Aufforderung diesen anzugeben IfNotExist, %DefaultPfad% { MsgBox, 0, %ProgrammName%, Der Defaultpfad zur Bilderauswahl kann nicht gefunden werden.`n`nBitte wähle nachfolgend den Pfad aus.`n`nStarte anschließend das Programm neu! ;nutze als Startverzeichnis zur Pfadauswahl den Arbeitsplatz FileSelectFolder, DefaultPfad , ::{20d04fe0-3aea-1069-a2d8-08002b30309d}, 1, Bitte wähle Dein Bilderverzeichnis aus! IniWrite, %DefaultPfad%, settings.ini, DefaultP, Key ExitApp } ; wähle das Veruzeichnis in dem sich die zu taggenden Bilder befinden ; der * ist wichtig, damit der Rest vom Verzeichnisbaum auch dargestellt wird FileSelectFolder, BilderVZ , *%DefaultPfad%, 0, Bilderverzeichnis auswählen ; beende das Skript, wenn kein Verzeichnis gewählt wird if ErrorLevel { MsgBox,0,%ProgrammName%,Kein Verzeichnis gewählt!`nProgramm wird beendet. ExitApp } ;################################################### ;### Hier kommt die GUI ;################################################### ; IPTC-Tags wählen Gui, Add, Checkbox, x10 y25 vHeadlineCheck checked, Headline Gui, Add, Checkbox, x10 y45 h30 vDatumCheck checked, Datum Gui, Add, Checkbox, x10 y75 h30 vOrtCheck checked, Ort Gui, Add, Checkbox, x10 y105 h30 vBundeslandCheck checked, Bundesland Gui, Add, Checkbox, x10 y135 h30 vStaatCheck checked, Staat Gui, Add, GroupBox, x3 y3 w390 h170, IPTC-Tags auswählen ; Logfile schreiben, Auswahl Gui, Add, GroupBox, x3 y10 y180 w390 h50, Logfile Gui, Add, Checkbox, x10 y200 vLogfile checked, Logfile schreiben ; Buttons Gui, Add, Button, x6 y250 w90 h30 Default gOK, OK Gui, Add, Button, x106 y250 w90 h30 gAbbrechen, Abbrechen Gui, Add, Button, x206 y250 w90 h30 gEinstellungen, Einstellungen Gui, Add, Button, x306 y250 w90 h30 gHilfe, IPTC-Hilfe Gui, Show, w400, %ProgrammName% Return Einstellungen: Run, settings.ini Return OK: Gui, Submit Gui, Destroy ;################################################### ;### Checkboxauswertung ;################################################### ; die Inputboxen erscheinen nur, wenn sie vorher ausgewählt wurden If HeadlineCheck { Gui, Add, Text, , Überschrift: Gui, Add, Edit, r1 w300 vMyHeadline, } If DatumCheck { Gui, Add, Text, , Datum: ;FileGetTime, vMyDatum, Filename, C ;Gui, Add, DateTime, MyDatum, LongDate ;FormatTime, MyDatum1, %MyDatum%, yyyy-MM-dd Gui, Add, Edit, r1 vMyDatum1, yyyy-MM-dd ;MsgBox, %MyDatum1% } If OrtCheck { Gui, Add, Text, , Ort: Gui, Add, Edit, r1 vMyOrt, } If BundeslandCheck { Gui, Add, Text, , Bundesland: Gui, Add, ComboBox, vMyBundesland, Bayern|Sachsen|Sachsen-Anhalt|Thueringen } If StaatCheck { Gui, Add, Text, , Staat: Gui, Add, Edit, r1 vMyStaat,DE } Gui, Add, Button, x6 y240 w90 h30 Default gOK1, IPTC-Daten schreiben Gui, Add, Button, x106 y240 w90 h30 gAbbrechen, Abbrechen Gui, Add, Button, x306 y240 w90 h30 gHilfe, IPTC-Hilfe gui, Show, w400, %ProgrammName% Return OK1: Gui, Submit Gui, Destroy ;################################################### ;### IPTC-Schreiben Loop ;################################################### Progress, zh0 fs10 h50, Schreibe IPTC-Daten..., , %ProgrammName% Loop, %BilderVZ%\*.jpg { ControlSetText, , Schreibe Daten für %A_LoopFileName%, %ProgrammName% If MyDatum1 { RunWait, %Exiv2Pfad% -M"set Iptc.Application2.DateCreated Date %MyDatum1%" -k "%A_LoopFileFullPath%", ,hide ControlSetText, , Schreibe Daten für %A_LoopFileName%`nErstellungsdatum: %MyDatum1%, %ProgrammName% } If MyOrt { RunWait, %Exiv2Pfad% -M"set Iptc.Application2.City String %MyOrt%" -k "%A_LoopFileFullPath%", ,hide ControlSetText, , Schreibe Daten für %A_LoopFileName%`nOrt: %MyOrt%, %ProgrammName% } If MyBundesland { RunWait, %Exiv2Pfad% -M"set Iptc.Application2.ProvinceState String %MyBundesland%" -k "%A_LoopFileFullPath%", ,hide ControlSetText, , Schreibe Daten für %A_LoopFileName%`nBundesland: %MyBundesland%, %ProgrammName% } if MyStaat { RunWait, %Exiv2Pfad% -M"set Iptc.Application2.CountryName String %MyStaat%" -k "%A_LoopFileFullPath%", ,hide ControlSetText, , Schreibe Daten für %A_LoopFileName%`nLand: %MyStaat%, %ProgrammName% } if MyHeadline { RunWait, %Exiv2Pfad% -M"set Iptc.Application2.Headline String %MyHeadline%" -k "%A_LoopFileFullPath%", ,hide ControlSetText, , Schreibe Daten für %A_LoopFileName%`nHeadline: %MyHeadline%, %ProgrammName% } } Progress, Off ; wenn das Logfile angecheckt wurde If Logfile=1 { ; führe exiv2.exe in der Kommandozeile aus und lenke die Ausgabe um RunWait, %comspec% /c "%Exiv2Pfad% -pi %BilderVZ%\*.jpg > log.txt" MsgBox, 4,%ProgrammName%,Soll das Logfile angezeigt werden? IfMsgBox Yes Run, log.txt } ;################################################### ;### universelles beenden der GUI ;################################################### ; GUI zerstören beim Schliessen, sonst Fehlermeldung GuiEscape: GuiClose: Abbrechen: Gui, Destroy ExitApp ;################################################### ;### Hilfe ;################################################### Hilfe: Run, http://de.wikipedia.org/wiki/IPTC-NAA-Standard Return