Dateien nummerieren

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

Fuxxli
Posts: 14
Joined: 16 Apr 2018, 07:37

Dateien nummerieren

Post by Fuxxli » 05 May 2022, 07:26

Hallo zusammen

Dank dem Forum und eurer Mithilfe habe ich einst ein Script erstellt, welches mir bei der Umbenennung von Dateien hilft. Hier wird schlussendlich folgendes ausgegeben: Änderungsdatum_Kürzel Ersteller_Kürzel Dokumentart_Dateiname bestehend_Kürzel Firma
Gerne würde ich das Script etwas umgestalten um Fotos zu nummerieren, ideal wäre: Erstellungsdatum_Kürzel Ersteller_fortlaufende Nummerierung

Die ersten beiden habe ich soweit schon, bei der Nummerierung konnte ich bislang keine Lösung finden. Hat hier allenfalls jemand die richtigen Schlüsselwörter oder einen Vorschlag wie man dies bewerkstelligen könnte? Die Fotos liegen jeweils in einem Ordner und werden dann laufend ergänzt. Von diesen Ordner gibt es x-tausende. Wie bei diesem Script sollten die angewählten Dateien bearbeitet werden sobald das Script per Tastenkombination gestartet wird.

Das effektive Aufnahmedatum eines Fotos kann nicht ausgelesen werden oder? Man sieht dies per rechtsklick --> Eigenschaften --> Details --> Aufnahmedatum
Das wäre natürlich das Oberoptimum wenn dies als Erstellungsdatum ausgelesen und im Dateiname eingefügt werden kann. Mit dem aktuellen Script geht lediglich wann die Datei im Explorer abgelegt wurde.

Für jegliche Hinweise oder Hilfe bin ich euch sehr dankbar :D

Code: Select all

#NoEnv                                                           						; Empfohlen für Leistung und Kompatibilität mit zukunftigen AutoHotkey-Versionen. 
SendMode Input                                                  						; Empfohlen für Geschwindigkeit und Zuverlässigkeit neuer Skripte. 
SetWorkingDir %A_ScriptDir%                                      					; Sicherstellen einen einheitlichen Startverzeichnisses. 
#SingleInstance, Force                                           						; skips the dialog box and replaces the old instance automatically

#IfWinActive, ahk_exe explorer.exe                               					; Script nur ausführen in Windows Explorer
^F2::                                                             						; Ctrl + F7 (Hotkey zum Aktivieren des Skripts) 
CLIPBOARD =                                                      						; Zwischenablage leeren 
Send {Ctrl Down}c{Ctrl Up}                                       						; aktuell markierte Dateien kopieren 
ClipWait, 1                                                      						; wartet 1 Sekunde darauf, dass etwas ins CLipboard kopiert wird.
If (ErrorLevel)  {                                               						; Zeitüberschreitung, nichts kopiert
   MsgBox, Nichts kopiert!
   Return
}
LOOP , PARSE, CLIPBOARD, `n, `r                                  					; Abarbeiten aller markierten Dateien 
{ 
   Transform   , DateiMitPfad, Deref, %A_LoopField%              				; Umwandeln des Variableninhalts von Text in einen verwertbaren Pfad 
   FileGetTime , DateiErstellung, %DateiMitPfad%, C              				; Ermitteln des Erstellungsdatums und der Zeit der Datei (M = Änderungsdatum, C = Erstellungsdatum, A = letzter Zugriff) 
   FormatTime  , ZeitStempel , %DateiErstellung%, yyMMdd_'PF'_'OF'_     			; Formatieren desselben 
  MeineVar := "_SMH."	
   SplitPath   , DateiMitPfad, Name, Verz, End, NameOhneEnd, Laufwerk			; Aufdröseln des Pfades in seine Bestandteile 
   DateiNameNeu := Verz . "\" . ZeitStempel . NameOhneEnd . MeineVar . End			; Erzeugen des neuen Dateinamens 
   Transform   , DateiMitPfadNeu, Deref, %DateiNameNeu%          				; Umwandeln des Variableninhalts von Text in einen verwertbaren Pfad 
   FileMoveDir    , %DateiMitPfad%, %DateiMitPfadNeu%, R            				; Umbenennen der Datei 
} 
RETURN 

BoBo
Posts: 6564
Joined: 13 May 2014, 17:15

Re: Dateien nummerieren

Post by BoBo » 06 May 2022, 16:03

Zu Datei-Eigenschaften/properties gibt es ein entsprechendes script von @just me im Forum: viewtopic.php?f=10&t=81812

Code: Select all

F12::                                
   clipboard := ""
   Send +{F10}a				; kopiert komplette Pfandangabe im Windows Explorer
   ClipWait
   arr := StrSplit(clipboard,"`n")
   Loop % arr.Count()
   { SplitPath,% arr[A_Index]
              , fName
              , fDir
              , fExt
              , fNameNoExt
              , fDrive
;     <hier den Dateinamen/Pfad befrickeln>
   }
Return

Fuxxli
Posts: 14
Joined: 16 Apr 2018, 07:37

Re: Dateien nummerieren

Post by Fuxxli » 09 May 2022, 04:38

Hallo BoBo

Vielen Dank für deinen Input :) ich versuche mich mal schlau zu machen.

Fuxxli
Posts: 14
Joined: 16 Apr 2018, 07:37

Re: Dateien nummerieren

Post by Fuxxli » 12 May 2022, 01:01

Hallo BoBo

Konnte es leider nicht lösen mit deinem Input. Da sind meine Kenntnisse definitiv zu gering :lol:
Ich habe zudem noch bemerkt, dass nicht immer in allen Fotos das Aufnahmedatum vorhanden ist. Damit es keine Probleme gibt habe ich es über InputBox gelöst. Funktioniert soweit alles wie ich es möchte :D
Ich stelle den Code noch hier rein, falls jemand etwas ähnliches machen will. Ist aber ein Anfängercode und für die Profis hier sicherlich zu einfach gestaltet ;)
Vielen Dank an Alle, welche hier im Forum immer wieder hilfreiche Tipps geben.

Code: Select all

#NoEnv                                                           						; Empfohlen für Leistung und Kompatibilität mit zukunftigen AutoHotkey-Versionen. 
SendMode Input                                                   						; Empfohlen für Geschwindigkeit und Zuverlässigkeit neuer Skripte. 
SetWorkingDir %A_ScriptDir%                                      					; Sicherstellen einen einheitlichen Startverzeichnisses. 
#SingleInstance, Force                                           						; skips the dialog box and replaces the old instance automatically

#IfWinActive, ahk_exe explorer.exe                               					; Script nur ausführen in Windows Explorer
+F2::                                                             						; Shift & F2 (Hotkey zum Aktivieren des Skripts) 
CLIPBOARD =                                                      						; Zwischenablage leeren 
Send {Ctrl Down}c{Ctrl Up}                                       						; aktuell markierte Dateien kopieren 
ClipWait, 1                                                      						; wartet 1 Sekunde darauf, dass etwas ins CLipboard kopiert wird.
If (ErrorLevel)  {                                               						; Zeitüberschreitung, nichts kopiert
   MsgBox, Nichts kopiert!
   Return
}
 InputBox, UserInput, Photo Number, Bitte gib die letzte vorhandene Zahl ein., , 400, 200
if ErrorLevel
    MsgBox, CANCEL was pressed.
else
 InputBox, UserInput2, Photo Datum, Bitte gib das Aufnahmedatum (yymmdd) ein., , 400, 200
if ErrorLevel
    MsgBox, CANCEL was pressed.
else
LOOP , PARSE, CLIPBOARD, `n, `r                                  					; Abarbeiten aller markierten Dateien 
{ 
   Transform   , DateiMitPfad, Deref, %A_LoopField%              				; Umwandeln des Variableninhalts von Text in einen verwertbaren Pfad 
  Aufnahmedatum := UserInput2
   MeineVar := "_PF_Foto_"								; Namensergänzung 1
   MeineVar2 := "."									; Namensergänzung 2
   UserInput++									; erhöhen der eingebenen Zahl +1
   Neue_Nummer := UserInput							; Vorbereitung für neuen Dateinamen
   SplitPath   , DateiMitPfad, Name, Verz, End, NameOhneEnd, Laufwerk			; Aufdröseln des Pfades in seine Bestandteile 
   DateiNameNeu := Verz . "\" . Aufnahmedatum . MeineVar . Neue_Nummer . MeineVar2 . End	; Erzeugen des neuen Dateinamens 
   Transform   , DateiMitPfadNeu, Deref, %DateiNameNeu%          				; Umwandeln des Variableninhalts von Text in einen verwertbaren Pfad 
   FileMoveDir    , %DateiMitPfad%, %DateiMitPfadNeu%, R            				; Umbenennen der Datei 
} 
RETURN 

just me
Posts: 9560
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Dateien nummerieren

Post by just me » 12 May 2022, 01:42

Moin,

ich war mir absolut sicher, das gestern gepostet zu haben, es ist aber nicht da.

Hier ist eine Art Auszug aus der Funktion GetFullDetails(). GetPhotoDateTaken(FilePath) gibt für die übergebene Datei das Aufnahmedatum zurück, wenn die Datei eines enthält:

Code: Select all

GetPhotoDateTaken(FilePath) { ; muss ein vollständiger Pfad sein
   SplitPath, FilePath, FileName, FileDir
   If (SFI := ComObjCreate("Shell.Application").NameSpace(FileDir).ParseName(FileName))
      Return SFI.ExtendedProperty("System.Photo.DateTaken")
}

fredchf
Posts: 54
Joined: 30 Sep 2013, 14:55

Re: Dateien nummerieren

Post by fredchf » 13 May 2022, 07:26

Hallo!
Was du suchst, sind die EXIF-Informationen in deinen Fotos.
Ich nutze viele Jahre schon ein selbstgeschriebenes Script um alle neuen Fotots bei mir in eine Ordnerstruktur zu verschieben, verlustfrei zu drehen und die Dateien anhand der EXIF-Informationen umzubenennen.

Eine kompilierte Version liegt hier.
https://c.1und1.de/@519882868600608817/YPEz9Bk6Rf69gfemn-Ui-w (Download befristet bis 13/05/2023)

VG
Attachments
EXIFrenamer.gif
EXIFrenamer.gif (752.5 KiB) Viewed 801 times

BoBo
Posts: 6564
Joined: 13 May 2014, 17:15

Re: Dateien nummerieren

Post by BoBo » 13 May 2022, 10:47

@fredchf - :o gibts das auch uncompiliert, da das "TotalCommander"-like wildcarding (re)naming tool gerade vor kurzem angefragt wurde? :)

fredchf
Posts: 54
Joined: 30 Sep 2013, 14:55

Re: Dateien nummerieren

Post by fredchf » 13 May 2022, 15:07

Hallo Bobo!
Das Script stelle ich gerne zur Verfügung. Es ist aber noch Zeiten (mehr als 10 Jahre her), als man für Objekte noch Bibliotheken nutzen musste und benutzt Kommandozeilentools.

VG

Code: Select all

;
; AutoHotkey Version: 1.x
; Language:       Deutsch
; Platform:       Win9x/NT
; Author:         fredchf
;
; Script Function:
/*
Bilddateien(jpg) mit Hilfe von EXIF-Informationen Umbenennen und Verschieben
#######################################
benötigte Dateien: jhead.exe,jpegtran.exe
########################################
Thanks To: die Authoren von jhead und jpegtran
from : http://www.sentex.net/~mwandel/jhead/
from : http://jpegclub.org/

Änderungen:
* Version 2.1.3 vom 02.03.2010 22:29:59
* var doppelt vergeben(uordner)
* leere unterordner wurden erstellt auch wenn nicht gewählt

* Version 2.1.2 vom 27.01.2010 07:25:09 
* neue Var(%cama%) 
* alternativpfade für ziel
* sprache über radios wechseln

* Version 2.1.1 vom 26.01.2010 06:13:18 
* Bug mit var 'N' beseitigt(wurde in subroutine pstring geleert)

* Version 2.1.0 vom 21.01.2010 23:20:59 
* neue Var(%NN%) für Ziffern aus altem Dateinamen

* Version 2.0.9 vom 03.12.2009 06:15:46 
* Bug beim kopieren der RAW-Dateien behoben

* Version 2.0.8 vom 02.12.2009 06:15:46 
* Tab mit Einstellungen

* Version 2.0.7 vom 23.11.2009 19:45:31 
* teilweise in Englisch mit ini-Option "English = 1"

* Version 2.0.6 vom 21.08.2009 16:27:01 
* 2 neue mögliche schlüssel in ini(kopi_raw;raw_ext)
* "kopi_raw=1" ermöglicht das kopieren gleichnamiger ausgangs-RAW-dateien in zusätzliche unterordner namens "RAW"
* benötigt wird dann auch die Option "raw_ext=",etwa "cr2"

* Version 2.0.5 vom 9.01.2009 22:06:20 
* bei fehlenden exif-infos kann nun fortgefahren werden(für ChrDark)

* Version 2.0.4 vom 26.12.2008 20:52:31
* Problem mit "Carriage Return & Linefeed" führte in der Ansicht der Logdatei mit Editor zu Darstellungsfehlern
* auf einigen Systemen funktionierte die Autorotation auch mit vorhandenen Orientierungsinfos nicht
* (wechsel des A_WorkingDir scheint Abhilfe zu schaffen)
* Default-Schriftgröße

* Version 2.0.3 vom 22.12.2008 17:04:50
* negierte wirkung durch ini-schlüssel korrigiert(ein fehlendes zeichen "!")

* Version 2.0.2 vom 22.12.2008 14:25:51
* option zum kopieren statt verschieben(ini-eintrag bei bedarf kopieren=1)

* Version 2.0.1 vom 21.12.2008 13:20:41
* simple prüfung der ordner
* log angepasst

* Version 2.0.0 vom 19.12.2008 19:41:17
* fast völlige Neukonstruktion der gui und des Ablaufs
* optionale Rotation der Bilder bei vorhandenen Orientierungsinformationen
* optionale Berücksichtigung von Unterordnern im Aufnahmeordner
* wechsel der Zusatztools(jhead.exe,jpegtran.exe statt exiv2.exe)

*/
Version = Version 2.1.3 vom 02.03.2010 22:30:16
#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
#NoTrayIcon
SetBatchLines, -1
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.
SplitPath, A_ScriptFullPath, , , , OutNameNoExt,
ini = %A_ScriptDir%\settings_%OutNameNoExt%.ini
log_datei = %A_ScriptDir%\log_%OutNameNoExt%.txt
tmp = %A_Temp%\Renamer.tmp
; -----------------------benötigte Dateien------------------------------
FileInstall, jhead.exe, %A_Temp%\jhead.exe, 1  ; jhead.exe -autorot 2.jpg
FileInstall, jpegtran.exe, %A_Temp%\jpegtran.exe, 1
; -----------------------------------------------------------------------
IfNotExist, %ini%
    Gosub, FirstRun
Gosub, inir
Gosub, lng
; ----Menü-------------------------------------------------------------------
erster=%A_YYYY%\%A_MMMM%
Menu, vmenü, add, %Vorlagen%, ordnerbs, ;Menü erzeugen
Menu, vmenü, add, , ,
Menu, vmenü, add, \%erster%\, setordner1,
Menu, vmenü, add, \%letztekam1% %letztekam%\%erster%\, setordner2,
Menu, vmenü, add, \%erster%\%A_DDDD%\, setordner3,
Menu, vmenü, add, \%erster%\%A_DDDD% den %A_DD%.\, setordner4,
Menu, vmenü, add, \%erster%\%A_DD%.%A_MM%.%A_YYYY%\, setordner5,
Menu, vmenü, add, \%A_DDDD% %A_DD%.%A_MM%.%A_YYYY%\, setordner6,
Menu, tray, add, list Vars, lvars,
; -----------------------------------------------------------------------
Hotkey, ESC, abbruch, Off
; -----------------------------------------------------------------------
Gui, Color, F4F3FF
Gui, Add, Tab, w482 h300 , %Dateiname%|%Unterordner%|%Einstellungen%
  Gui, Tab, %Dateiname%
    Gui, font, S9
    Gui, Add, Edit, x20 y55 w365 -Wrap +ReadOnly vaufnahmeordner, %aufnahmeordner%
    Gui, Add, ComboBox, xp y+35 wp -Wrap vziel, % set_combo(alt_ziel, ziel)
    Gui, Add, ComboBox, xp R10 y+30 wp h20 vcombo gcombo, %comb%
    Gui, Add, Text, xp y+38 wp vname_vorschau,
    Gui, Add, Button, x+10 y70 w90 h45 -Wrap gandern vandern, %Pfade_ändern%
    Gui, Add, Button, xp y+35 wp h30 -Wrap gabbruch vabbruch, %Abbruch%
    Gui, Add, Button, xp y+5 wp h30 -Wrap gstart Default vstart, %Start%
    Gui, Add, Button, xp y+5 wp h30 gmsbox vmsg, %Hilfe%
    Gui, Add, GroupBox, x15 y35 w375 h50 vg4, %Ausgangsordner_für_Bilder%
    Gui, Add, GroupBox, xp y+5 wp hp vg3, %Zielordner_für_Bilder%
    Gui, Add, GroupBox, xp y+5 wp hp vg2, %Dateiname%
    Gui, Add, GroupBox, xp y+5 wp hp vg1, %Vorschau_für_den_Namen%
    ; ------------------------------------------------------------------------------
  Gui, Tab, %Unterordner%
    Gui, Add, Button, x386 y33 w90 h30 gmsbox2, %Hilfe%
    Gui, Add, Edit, x20 y+125 w380 h20 -Wrap +ReadOnly +Center voexam,
    Gui, Add, Button, x+5 yp w60 hp -Wrap gmenu vMenu, %Vorlagen%
    Gui, Add, Edit, x20 y+35 w380 h20 -Wrap +Center cRed vuordner gordnerbs, %uordner%
    Gui, Add, Checkbox, x20 y78 h30 Checked%unterordner_ch% vunterordner_ch, %Unterordner_im_Ziel_erstellen%
    Gui, Add, Checkbox, xp y+20 h30 Checked%Checkunterordner% vRecurse, %Unterordner_im_Ausgangsordner_berücksichtigen%
    Gui, Add, GroupBox, x15 y60 w470 h50, %Unterordner_Erstellen_group%
    Gui, Add, GroupBox, xp y+5 wp hp, %unterordner_mit_ein_group%
    Gui, Add, GroupBox, xp y+5 wp hp, %aktuelle_einst_group%
    Gui, Add, GroupBox, xp y+5 wp hp , %Ergebnis_im_group%
  Gui, Tab, %Einstellungen%
    Gui, Add, Checkbox, x20 y48 h30 Checked%explore_ziel% vexplore_ziel, %zielordner_öffnen_wenn_fertig%
    Gui, Add, Checkbox, xp y+15 h30 Checked%kopieren% vkopieren, %nur_kopieren%  
    Gui, Add, Checkbox, xp y+20 Checked%autorotation% vCheckbox_rot, %Autorotation_der_bilder%
    Gui, Add, Checkbox, xp y+20 Checked%kopi_raw% vkopi_raw gcontrol, %gleichnamige_raw_kopieren%
    Gui, Add, edit, x+10 w35 h20 vraw_ext, %raw_ext%
    Gui, Add, radio, % "x20 y+25 Checked" (eng) " gsprache", Englisch
    Gui, Add, radio, % "x+5 vsprache gsprache Checked" (!eng), Deutsch
    Gui, Show, , %titel%
    Gosub, ordnerbs
    Gosub, control
    GuiControl, Focus, start,
    GuiControl, , combo, %lcomb%||
    Gosub, nbeispiel
    Return
; ------------------------------------------------------------------------------
lvars: ; nur erreichbar mit trayicon
ListVars
Return
    ; -----------------------------------------------------------------------
control:
  gui, Submit, NoHide
  GuiControl, % (kopi_raw ? "Enable" : "Disable"), raw_ext, 
Return

    ; -----------------------------------------------------------------------
sprache:
  gui, Submit, NoHide
  IniWrite, % (sprache = 1 ? "1" : "0"), %ini%, Settings, English ;in ini schreiben
  Reload
Return
    ; -----------------------------------------------------------------------
msbox:
  Gui, +OwnDialogs
  cama := FirstNumericString(cam)
  RegExMatch(N, "\d+", NN)
  if eng
    txt_m = 
    (
    possible variables for the filenames:
    (enclose by percent sign "`% ")
    ss`tSeconds digit
    min`tMinutes digit
    hh`tHours digit
    dd`tDay digit(%A_DD%)
    MM`tMonth digit(%A_MM%)
    MM1`t(e. g.: %A_MMMM%)
    yyyy`tYear (four digit,%A_YEAR%)
    yy`tYear (two digit)
    day`t%A_DDDD%
    cam`tCameramodel (%cam%)
    cama`tCameramodel shortcut (%cama%)
    camh`tCameramanufacturer (%camh%)
    N`told Filename(%N%)
    NN`told Filename(only digits,%NN%)
    
    
    Attention, these characters do not use:\ / :`" * ?<> |
    
    %version%
    )
  Else
    txt_m = 
    (
    mögliche Variablen für den Dateinamen sind:
    (durch Prozentzeichen"`%" umschliessen)
    ss`tSekunden zweistellig
    min`tMinuten zweistellig
    hh`tStunden zweistellig
    dd`tTag zweistellig(%A_DD%)
    MM`tMonat zweistellig(%A_MM%)
    MM1`t(zum Beispiel: %A_MMMM%)
    yyyy`tJahr (4stellig,%A_YEAR%)
    yy`tJahr (2stellig)
    day`t%A_DDDD%
    cam`tKameramodell (%cam%)
    cama`tKameramodell Abkürzung (%cama%)
    camh`tKamreahersteller (%camh%)
    N`talter Dateiname(%N%)
    NN`talter Dateiname(nur zusammenhängende Ziffern,%NN%)
    
    
    ACHTUNG,diese Zeichen nicht verwenden:\ / :`" * ?<> |
    
    %version%
    )
  MsgBox, 64, Hilfe, %txt_m%
Return
; -----------------------------------------------------------------------
msbox2:
  Gui, +OwnDialogs
  cama := FirstNumericString(cam)
  if eng
    txt_m = 
    (
    possible variables for the foldernames:
    (enclose by percent sign "`% ")
    
    dd`tDay digit(%A_DD%)
    MM`tMonth gigit(%A_MM%)
    MM1`t(e. g.: %A_MMMM%)
    yyyy`tYear (four digits,%A_YYYY%)
    yy`tYear (2 digit)
    day`t%A_DDDD%
    cam`tCameramodel (%cam%)
    cama`tCameramodel shortcut(%cama%)
    camh`tCameramanufacturer (%camh%)
    
    
    Attention, these characters do not use:\ / :`" * ?<> |
    
    %version%
    )
  Else
    txt_m = 
    (
    mögliche Variablen für die Unterordner sind:
    (durch Prozentzeichen"`%" umschliessen)
    
    dd`tTag zweistellig(%A_DD%)
    MM`tMonat zweistellig(%A_MM%)
    MM1`t(zum Beispiel: %A_MMMM%)
    yyyy`tJahr (4stellig,%A_YYYY%)
    yy`tJahr (2stellig)
    day`t%A_DDDD%
    cam`tKameramodell (%cam%)
    cama`tKameramodell Abkürzung(%cama%)
    camh`tKamreahersteller (%camh%)
    
    
    ACHTUNG,diese Zeichen nicht verwenden:\ / :`" * ?<> |
    
    %version%
    )
  MsgBox, 64, Hilfe, %txt_m%
Return
; -----------------------------------------------------------------------
start:
  Gui, Submit, NoHide
  Gosub, iniw
  Gosub, kontrolle
  If err
      Return
  Hotkey, ESC, abbruch, On
  Gosub, hide_controls
  Gosub, gui_add
  Loop,%aufnahmeordner%\*.jpg,0,%Recurse% ;Dateien zählen
      files2++
  If !files2
    {
      MsgBox, Keine Bilder in %aufnahmeordner% gefunden.
      Gosub, iniw
      Sleep, 200
      Reload
      ExitApp
    }
  FileDelete, %log_datei%
  ;     ----------------------------
  Loop, %aufnahmeordner%\*.jpg, , %Recurse%  ;Schleife für jede JPG-Datei im "aufnahmeordner" Starten
    {
      string1 = 0
      string2 =
      r =
      IfExist, %tmp%
          FileDelete, %tmp%
      SplitPath, A_LoopFileLongPath, , , , N,
      RunWait, %ComSpec% /c %A_Temp%\jhead.exe "%A_LoopFileLongPath%" >"%tmp%", , Hide
      FileRead, tt, *t %tmp%
      Gosub, pstring
      If yyyy = ; keine gültigen EXIF-Informationen
        {
          Gui, +OwnDialogs
          MsgBox, 17, , Die folgene Datei enthält keine gültigen EXIF-Infos.`n%a_loopFileName%`n`nWeiter?
          IfMsgBox, Cancel
              ExitApp
          Continue
        }
      Gosub, getformated_time
      proz := Round((100/files2*A_Index), 1) ;Berechnung für den Fortschrittsbalken
      ; ------------------------------Ordner erstellen------------------------------------------------
      if(unterordner_ch and !FileExist(ziel "\" Deref(uordner)))
        {
          FileCreateDir, % ziel "\" Deref(uordner)
          If ErrorLevel
            {
              MsgBox, 4112, , % "Zielordner konnte nicht erstellt werden!`nAbbruch`n`n" ziel "\" Deref(uordner)
              ExitApp
            }
        }
      ; ------------------------------------------------------------------------------
      If kopi_raw
        {
          raw_ordner := ziel "\" (!unterordner_ch ? "" : Deref(uordner)) "\RAW"
          IfNotExist, %raw_ordner%
            {
              FileCreateDir, %raw_ordner%
              If ErrorLevel
                {
                  MsgBox, 4112, , % "Zielordner konnte nicht erstellt werden!`nAbbruch`n`n" raw_ordner
                  ExitApp
                }
            }
        }
      FileName := ziel "\" Deref(uordner) "\" Deref(combo)
      If !unterordner_ch ; Nutzer wünscht keine Unterordner
          FileName := ziel "\" Deref(combo)
      Loop, ; evtl. zähler anhängen
        {
          IfNotExist, % FileName string2 ".jpg"
              Break
          SetFormat, Float, 02.0
          string1 += 01.0
          string2 := "  " string1
        }
      FileName := FileName string2 ".jpg"
      SplitPath, FileName, OutFileName2, , , ,
      GuiControl, , pic, *w100 *h-1 %A_LoopFileLongPath% ;verändert Controls in der Gui
      GuiControl, , aktuelles, % "von:`n" a_loopFileName "`nnach:`n" OutFileName2 "`n`n" A_Index " von " files2 "  (" proz "%)`n" calc_kb(A_LoopFileSize, 2) " " (if mrot ? "#mit Rotation#" : "") ;verändert Controls in der Gui
      GuiControl, , Progresss, %proz% ;verändert Controls in der Gui
      GuiControl, , Text22, %proz%`% ;verändert Controls in der Gui
      ; ------------------------------------------------------------------------------
      if kopi_raw
      {
        SplitPath, A_LoopFileLongPath, raw_OutFileName, raw_OutDir, , raw_OutNameNoExt,
        SplitPath, FileName, , rawto_OutDir, , rawto_OutNameNoExt,
      }
    ; ------------------------------------------------------------------------------
      If !kopieren
          FileMove, %A_LoopFileLongPath%, %FileName%
      Else
          FileCopy, %A_LoopFileLongPath%, %FileName%
      If ErrorLevel
        {
          MsgBox, 4112, , Die folgene Datei konnte nicht korrekt (Fehlercode %ErrorLevel%) in Zielordner verschoben werden!`nAbbruch`n`n%FileName%
          ExitApp
        }
      ; ------------------------------------------------------------------------------
      if kopi_raw
        {
         If !kopieren
          {
            FileMove, %raw_OutDir%\%raw_OutNameNoExt%.%raw_ext%, %raw_ordner%\%rawto_OutNameNoExt%.%raw_ext%,
            FileAppend, % append() "`nRAW-kopieren von " raw_OutDir "\" raw_OutNameNoExt "." raw_ext " nach " raw_ordner "\" rawto_OutNameNoExt "." raw_ext "`n`n", %log_datei% ;verändert Controls in der Gui
           } 
         Else
          {
            FileCopy, %raw_OutDir%\%raw_OutNameNoExt%.%raw_ext%, %raw_ordner%\%rawto_OutNameNoExt%.%raw_ext%
            FileAppend, % append() "`nRAW-kopieren von " raw_OutDir "\" raw_OutNameNoExt "." raw_ext " nach " raw_ordner "\" rawto_OutNameNoExt "." raw_ext "`n`n", %log_datei% ;verändert Controls in der Gui
          }
      If ErrorLevel
        {
          MsgBox, 4112, , Die folgene Datei konnte nicht korrekt (Fehlercode %ErrorLevel%)in Zielordner verschoben werden!`nAbbruch`n`n%rawto_OutDir%%rawto_OutNameNoExt%.%raw_ext%
          ExitApp
        }
        }
      ; ------------------------------------------------------------------------------
      If (Checkbox_rot and mrot)
          RunWait, "%A_Temp%\jhead.exe" -autorot "%FileName%", %A_Temp%, Hide
      Gosub, settime
      FileAppend, % append() "`nvon: " A_LoopFileLongPath "`nnach: " FileName "`n" A_Index " von " files2 "  (" proz "%)`n" calc_kb(A_LoopFileSize, 2) "`n" (if mrot ? "#mit Rotation#" : "") "`n`n" tt "`n`n", %log_datei% ;verändert Controls in der Gui
    }
  ;     -------------------------------
  Gosub, iniw
  if explore_ziel
    Run, % ziel "\" Deref(uordner) ;Ordner Öffnen
  Gui, +OwnDialogs
  MsgBox, 292, %Logdatei%, %msg_log%, 15
  IfMsgBox, Yes
      Run, %log_datei% ;Logdatei öffnen
  ExitApp

  ; -----------------------------------------------------------------------
andern: ;Pfade ändern
  Gui, +OwnDialogs
  FileSelectFolder, aufnahmeordner, *%aufnahmeordner%, 1, %Select_folder_from%
  If ErrorLevel
      Return
  FileSelectFolder, ziel, *%ziel%, 1, %Select_folder_to%
  If ErrorLevel
      Return
  Gosub, iniw
  Reload
  ; -----------------------------------------------------------------------
combo:
nbeispiel: ; Namensbeispiel erstellen
  GuiControlGet, combo, , combo,
  cam = %letztekam%
  camh = %letztekam1%
  ss = %A_Sec%
  min = %A_Min%
  hh = %A_Hour%
  dd = %A_DD%
  MM = %A_MM%
  yyyy = %A_YYYY%
  Gosub, getformated_time
  GuiControl, , name_vorschau, % Deref(combo) ".jpg"
Return
; -----------------------------------------------------------------------
ordnerbs: ; Beispielordner erstellen
  GuiControlGet, uordner, , uordner,
  cam = %letztekam%
  camh = %letztekam1%
  ss = %A_Sec%
  min = %A_Min%
  hh = %A_Hour%
  dd = %A_DD%
  MM = %A_MM%
  yyyy = %A_YYYY%
  Gosub, getformated_time
;   uordner := Deref(uordner)
  GuiControl, , oexam, % "\" Deref(uordner) "\"
Return
; -----------------------------------------------------------------------
menu:
  Menu, vmenü, show
Return
; -----------------------------------------------------------------------
setordner1: ;Menü-Unterpunkte
  GuiControl, , uordner, `%yyyy`%\`%MM1`%
  Gosub, ordnerbs
Return
setordner2:
  GuiControl, , uordner, `%camh`% `%cam`%\`%yyyy`%\`%MM1`%
  Gosub, ordnerbs
Return
setordner3:
  GuiControl, , uordner, `%yyyy`%\`%MM1`%\`%day`%
  Gosub, ordnerbs
Return
setordner4:
  GuiControl, , uordner, `%yyyy`%\`%MM1`%\`%day`% den `%dd`%.
  Gosub, ordnerbs
Return
setordner5:
  GuiControl, , uordner, `%yyyy`%\`%MM1`%\`%dd`%.`%MM`%.`%yyyy`%
  Gosub, ordnerbs
Return
setordner6:
  GuiControl, , uordner, `%day`% `%dd`%.`%MM`%.`%yyyy`%
  Gosub, ordnerbs
Return
; -----------------------------------------------------------------------
abbruch:
GuiClose:
  ExitApp
  ; -----------------------------------------------------------------------
inir: ; Einstellungen lesen
  IniRead, letztekam, %ini%, Settings, letztekamera, FinePix F30
  IniRead, eng, %ini%, Settings, English, 0
  IniRead, letztekam1, %ini%, Settings, letztekamera_hersteller, FUJIFILM
  IniRead, N, %ini%, Settings, letzter_dateiname, DSC_1234
  IniRead, lcomb, %ini%, Settings, lcomb, `%dd`%-`%MM`%-`%yyyy`% `%hh`%.`%min`% `%day`%
  IniRead, comb, %ini%, Settings, comb, `%dd`%-`%MM`%-`%yyyy`% `%hh`%.`%min`% `%day`%||`%dd`%-`%MM`%-`%yyyy`% `%hh`%.`%min`%|`%YYYY`%-`%MM`%-`%DD`% `%hh`%.`%min`%|`%dd`%-`%MM`%-`%yyyy`% `%hh`%.`%min`% `%day`% `%camh`% `%cam`%|`%dd`%-`%MM`%-`%yyyy`% `%hh`%.`%min`% `%day`% `%cam`%|`%dd`%-`%MM`%-`%yyyy`% `%hh`%.`%min`% `%day`%  `%N`%|
  IniRead, ziel, %ini%, Settings, ziel,
  IniRead, alt_ziel, %ini%, Settings, alt_ziel, %A_Space%
  alt_ziel := (!alt_ziel ? ziel "|" : alt_ziel)
  IniRead, aufnahmeordner, %ini%, Settings, aufnahmeordner, ;Wert aus der ini lesen
  IniRead, Checkunterordner, %ini%, Settings, Unterordner_erstellen, 1
  IniRead, autorotation, %ini%, Settings, autorotation, 1
  IniRead, kopieren, %ini%, Settings, kopieren, 0
  IniRead, unterordner_ch, %ini%, Settings, unterordner, 1
  IniRead, kopi_raw, %ini%, Settings, kopi_raw, 0
  IniRead, raw_ext, %ini%, Settings, raw_ext, cr2
  IniRead, explore_ziel, %ini%, Settings, explore_ziel, 1
  If (ziel = "") OR (ziel = "Error")
    {
      MsgBox, 16, ,%ini% fehlerhaft`nggf. löschen!
      ExitApp
    }
  If (aufnahmeordner = "") OR (aufnahmeordner = "Error")
    {
      MsgBox, 16, ,%ini% fehlerhaft`nggf. löschen!
      ExitApp
    }
  IniRead, uordner, %ini%, Settings, uordner, `%yyyy`%\`%MM1`% ;Wert aus der ini lesen
  if (if kopi_raw and if !raw_ext)
    MsgBox, 16, Fehlerhafte ini, Wenn in der Ini-Datei das RAW-Kopieren aktiviert ist`,muss auch der Schlüssel "raw_ext" mit der Erweiterung existieren.`nAbbruch!
Return
; -----------------------------------------------------------------------
iniw: ; Einstellungen speichern
  IfNotInString, comb, %combo%
      comb = %comb%%combo%|
  IniWrite, %comb%, %ini%, Settings, comb ;wenn nicht,zur Liste hinzufügen
;   MsgBox, % combo
  IniWrite, %combo%, %ini%, Settings, lcomb ;Eintrag in ini-Datei für den letzten Dateinamen schreiben
  IniWrite, %uordner%, %ini%, Settings, uordner ;in ini schreiben
  IniWrite, %Checkunterordner%, %ini%, Settings, Unterordner_erstellen ;in ini schreiben
  IniWrite, %comb%, %ini%, Settings, comb ;in ini schreiben
  IniWrite, %cam%, %ini%, Settings, letztekamera ;in ini schreiben
  IniWrite, %camh%, %ini%, Settings, letztekamera_hersteller ;in ini schreiben
  if N
   IniWrite, %N%, %ini%, Settings, letzter_dateiname ;in ini schreiben
  IniWrite, %Checkbox_rot%, %ini%, Settings, Autorotation ;in ini schreiben
  IniWrite, %unterordner_ch%, %ini%, Settings, unterordner ;in ini schreiben
  IniWrite, %Aufnahmeordner%, %ini%, Settings, Aufnahmeordner ;in ini schreiben
  IniWrite, %explore_ziel%, %ini%, Settings, explore_ziel ;in ini schreiben
  IniWrite, %kopieren%, %ini%, Settings, kopieren ;in ini schreiben
  IniWrite, %raw_ext%, %ini%, Settings, raw_ext ;in ini schreiben
  IniWrite, %kopi_raw%, %ini%, Settings, kopi_raw ;in ini schreiben
  alt_ziel := (!InStr(alt_ziel, ziel "|") ? alt_ziel ziel "|" : alt_ziel)
  IniWrite, %alt_ziel%, %ini%, Settings, alt_ziel ;in ini schreiben
  IniWrite, %ziel%, %ini%, Settings, ziel ;in ini schreiben
Return
; -----------------------------------------------------------------------
firstrun: ; keine ini da
  FileSelectFolder, aufnahmeordner, , 1, %Select_folder_from% ;Ordner wählen
  If ErrorLevel
    {
      MsgBox, Nichts gewählt!
      ExitApp
    }
  FileSelectFolder, ziel, *%aufnahmeordner%, 1, %Select_folder_to% ;Ordner wählen
  If ErrorLevel
    {
      MsgBox, Nichts gewählt!
      ExitApp
    }
  IniWrite, %aufnahmeordner%, %ini%, Settings, aufnahmeordner ;in ini schreiben
  IniWrite, %ziel%, %ini%, Settings, ziel ;in ini schreiben
Return
; -----------------------------------------------------------------------
getformated_time: ; wochentag und monat ermitteln
  dateline = %yyyy%%MM%%dd%
  FormatTime, Day,%dateline%,dddd
  FormatTime,MM1,%dateline%,MMMM
Return
; ---------------------------------------------------------------------------
hide_controls:
  GuiControl, Hide, combo, ;Controls verstecken
  GuiControl, Hide, aufnahmeordner, ;Controls verstecken
  GuiControl, Hide, andern, ;Controls verstecken
  GuiControl, Hide, ziel, ;Controls verstecken
  GuiControl, Hide, start, ;Controls verstecken
  GuiControl, Hide, name_vorschau, ;Controls verstecken
  GuiControl, Hide, g1, ;Controls verstecken
  GuiControl, Hide, g2, ;Controls verstecken
  GuiControl, Hide, g3, ;Controls verstecken
  GuiControl, Hide, g4, ;Controls verstecken
  GuiControl, Hide, abbruch, ;Controls verstecken
  GuiControl, Hide, Checkbox_rot, ;Controls verstecken
  GuiControl, Hide, msg, ;Controls verstecken
  GuiControl, Disable, uordner, ;Controls verstecken
  GuiControl, Disable, unterordner_ch, ;Controls verstecken
  GuiControl, Disable, Recurse, ;Controls verstecken
  GuiControl, Disable, Menu, ;Controls verstecken
Return
;   ---------------------------------------------------------------------
gui_add:
    Gui, Tab, %Dateiname%
    Gui, Add, Picture, x20 y35 w100 h-1 vpic,
    Gui, Add, edit, x130 yp w352 h140 vaktuelles -Wrap +Center +ReadOnly,
    Gui, Add, Progress, x20 y+45 w460 h20 vProgresss cFF7200 BackgRoundWhite -Smooth,
    Gui, Add, text, xp yp w460 h20 +0x200 +Center +BackgRoundTrans vText22, %Gesamtfortschritt%
    Gui, Add, Text, x18 y+5 w365 h16, %AbbruchmitESC%
    Return
    ;   ---------------------------------------------------------------------
settime:
  setter = %yyyy%%MM%%dd%%hh%%min%%ss%
  ;   ------------------------
  FileSetTime, %setter%, %FileName%, C ;setzt das Erstellungsdatum auf das der Exif-Infos
  FileSetTime, %setter%, %FileName%, M ;setzt das ÄndeRungsdatum auf das der Exif-Infos
Return
;   ---------------------------------------------------------------------
; Deref(string2Deref) ; dereferenzieren
; {
;   global N, NN
;   RegExMatch(N, "\d+", NN)
;   Transform, OutputVar, Deref, %string2Deref%
;   Return OutputVar
; }
Deref(string2Deref) ; dereferenzieren
  {
    global
    If InStr(string2Deref,"%camh%")
        StringReplace, string2Deref, string2Deref,% ("%camh%"), %camh%, All ;Zeichen in Dateinamensmaske erstzen durch erhaltene Variablen
    If InStr(string2Deref,"%cama%")
        StringReplace, string2Deref, string2Deref,% ("%cama%"), % FirstNumericString(cam), All ;Zeichen in Dateinamensmaske erstzen durch erhaltene Variablen
    If InStr(string2Deref,"%cam%")
        StringReplace, string2Deref, string2Deref,% ("%cam%"), %cam%, All ;Zeichen in Dateinamensmaske erstzen durch erhaltene Variablen
    If InStr(string2Deref,"%yyyy%")
        StringReplace, string2Deref, string2Deref,% ("%yyyy%"), %yyyy%, All ;Zeichen in Dateinamensmaske erstzen durch erhaltene Variablen
    If InStr(string2Deref,"%yy%")
        StringReplace, string2Deref, string2Deref,% ("%yy%"), %yy%, All ;Zeichen in Dateinamensmaske erstzen durch erhaltene Variablen
    If InStr(string2Deref,"%Day%")
        StringReplace, string2Deref, string2Deref,% ("%Day%"), %Day%, All ;Zeichen in Dateinamensmaske erstzen durch erhaltene Variablen
    If InStr(string2Deref,"%MM%")
        StringReplace, string2Deref, string2Deref,% ("%MM%"), %MM%, All ;Zeichen in Dateinamensmaske erstzen durch erhaltene Variablen
    If InStr(string2Deref,"%MM1%")
        StringReplace, string2Deref, string2Deref,% ("%MM1%"), %MM1%, All ;Zeichen in Dateinamensmaske erstzen durch erhaltene Variablen
    If InStr(string2Deref,"%dd%")
        StringReplace, string2Deref, string2Deref,% ("%dd%"), %dd%, All ;Zeichen in Dateinamensmaske erstzen durch erhaltene Variablen
    If InStr(string2Deref,"%N%")
        StringReplace, string2Deref, string2Deref,% ("%N%"), %N%, All ;Zeichen in Dateinamensmaske erstzen durch erhaltene Variablen
    If InStr(string2Deref,"%min%")
        StringReplace, string2Deref, string2Deref,% ("%min%"), %min%, All ;Zeichen in Dateinamensmaske erstzen durch erhaltene Variablen
    If InStr(string2Deref,"%NN%")
        {
          RegExMatch(N, "\d+", NN)
          StringReplace, string2Deref, string2Deref,% ("%NN%"), %NN%, All ;Zeichen in Dateinamensmaske erstzen durch erhaltene Variablen       
        }
    If InStr(string2Deref,"%ss%")
        StringReplace, string2Deref, string2Deref,% ("%ss%"), %ss%, All ;Zeichen in Dateinamensmaske erstzen durch erhaltene Variablen
    If InStr(string2Deref,"%hh%")
        StringReplace, string2Deref, string2Deref,% ("%hh%"), %hh%, All ;Zeichen in Dateinamensmaske erstzen durch erhaltene Variablen
    Return string2Deref
  }

; -----------------------------------------------------------------------
FirstNumericString(String)
  {
    Loop, Parse, string, %A_Space%
    {
    	line := A_LoopField
      if RegExMatch(A_LoopField, "\d+", Un)
    	 Return A_LoopField    	
    }
  Return line
  }
; -----------------------------------------------------------------------
pstring: ; EXIF-Informationen auswerten
  Loop, 6 ;Exif_Array's leeren
      Exif_Array%A_Index% =
  yyyy =
  yy :=
  MM =
  dd =
  hh =
  mm =
  ss =
  camh =
  cam =
  mrot =
  ; ------
  Loop, Parse, tt, `n, `r
    {
      If A_LoopField Contains Camera make  :
        {
          StringSplit, Exif_Array, A_LoopField, :, %A_Space%
          camh = %Exif_Array2%
        }
      If A_LoopField Contains Camera model :
        {
          StringSplit, Exif_Array, A_LoopField, :, %A_Space%
          cam = %Exif_Array2%
        }
      If A_LoopField Contains Date/Time    :
        {
          StringSplit, Exif_Array, A_LoopField, :, %A_Space%
          yyyy = %Exif_Array2%
          yy := SubStr(Exif_Array2, 3, 2)
          MM = %Exif_Array3%
          StringSplit, day_hour, Exif_Array4, %A_Space%
          dd = %day_hour1%
          hh = %day_hour2%
          min = %Exif_Array5%
          ss = %Exif_Array6%
        }
      If A_LoopField Contains Orientation  :
          mrot = 1
      If A_Index > 18
          Break
    }
Return
; -----------------------------------------------------------------------
kontrolle:
  Gui, +OwnDialogs
  If  (!FileExist(A_Temp "\jhead.exe") or !FileExist(A_Temp "\jpegtran.exe"))
    {
      MsgBox, 4112, , Fehler!`njhead.exe oder/und jpegtran.exe konnten nicht gefunden werden!`nAbbruch!
      ExitApp
    }
  IfNotExist, %Aufnahmeordner%
    {
      MsgBox, 64, , Der Ausgangsordner konnte nicht gefunden werden.`n%aufnahmeordner%
      err = 1
      Return
    }
  IfInString, ziel, %Aufnahmeordner%
    {
      MsgBox, 64, , Der Ausgangsordner und das Ziel sollten sich nicht überschneiden!
      err = 1
      Return
    }
  err =
Return
; -----------------------------------------------------------------------
; ################ Funktion ##################
calc_kb(wievielb, nachkomma = 3) ; Übergabe von Bytes, Nachkommas- Rückgabe dynamisch(bytes,kB,mB,GB)
  {
    Return (wievielb > 1073741824) ? Round((wievielb / 1073741824), nachkomma) " GB" : ((wievielb > 1048576) ? Round((wievielb / 1048576), nachkomma) " MB" : ((wievielb > 1024) ? Round((wievielb / 1024),nachkomma) " kB" : wievielb . " bytes"))
  }
; -----------------------------------------------------------------------
append() ; Datum/Zeit zusammenstellen
  {
    line = `n--------------------------------------------------------------------
    Return A_DD "." A_MM "." A_YYYY " " A_Hour "." A_Min " Uhr " A_Sec "sec;" line
  }
; -----------------------------------------------------------------------
set_combo(alt_ziel, ziel)
  {
    StringReplace, OutputVar, alt_ziel, %ziel%|, %ziel%||
    Return OutputVar
  }
; ----------------------------Langsection-------------------------------------------
lng:
Vorlagen = Vorlagen
Abbruch = Abbruch
Start = Start
Pfade_ändern = Pfade ändern
Hilfe = Hilfe
vorschau_für_namen = Vorschau für den Namen
Zielordner_für_Bilder = Zielordner für die Bilder
Ausgangsordner_für_Bilder = Ausgangsordner für Bilder
Dateiname = Dateiname
Unterordner = Unterordner
Unterordner_Erstellen_group = Unterordner Erstellen,falls noch nicht vorhanden(siehe unten)
aktuelle_einst_group = aktuelle Einstellung für die Unterordner
unterordner_mit_ein_group = Unterordner mit einlesen(Recurse)
Ergebnis_im_group = Ergebnis im Zielordner am Beispiel Heute:
Unterordner_im_Ausgangsordner_berücksichtigen  = Unterordner im Augangsordner berücksichtigen
Unterordner_im_Ziel_erstellen = Unterordner im Ziel erstellen
Select_folder_from = Von wo sollen die Bilder Verschoben/Strukturiert werden?
Select_folder_to = Wo sollen die Bilder hin Verschoben/Strukturiert werden?`nes werden ggf. Unterordner erstellt
Gesamtfortschritt = Gesamtfortschritt
Logdatei = Logdatei
msg_log = Logdatei wurde erstellt`,jetzt öffnen?
titel = Bilder nach EXIF Umbenennen und Verschieben
AbbruchmitESC = Abbruch mit ESC
Einstellungen = Einstellungen
; ------------------------------------------------------------
nur_kopieren = nur Kopieren`n(Originalstruktur bleibt erhalten)
zielordner_öffnen_wenn_fertig = Zielordner öffnen wenn fertig`n(Explorer öffnet letzten Kopier-Ordner)
Autorotation_der_bilder = Autorotation der Bilder`n(bei vorhandenen Orientierungsinformationen werden Bilder danach verlustfrei ausgerichtet)
gleichnamige_raw_kopieren = gleichnamige RAW-Kopien verarbeiten`n(werden dann in zusätzlichen Unterordner 'RAW' verschoben/kopiert)
if !eng
  Return

Vorlagen = Existed
Abbruch = Cancel
Pfade_ändern = Change Paths
Start = Start
Hilfe = Help
vorschau_für_namen = Preview for Names
Zielordner_für_Bilder = Target Folder for Pictures
Ausgangsordner_für_Bilder = Source Folder for Pictures
Dateiname = Filename
Unterordner = Subfolder
Unterordner_Erstellen_group = Create subfolders, if not already present (see below)
aktuelle_einst_group = current settings for subfolders
unterordner_mit_ein_group = Sub-folders with read (Recurse)
Ergebnis_im_group = Results in the destination folder on the example today:
Unterordner_im_Ausgangsordner_berücksichtigen  = Account subfolder in the Source Folder
Unterordner_im_Ziel_erstellen = Create subfolders in the target
Select_folder_from = Moved from where the images are to be structured?
Select_folder_to = Where are the pictures should be structured towards Postponed?`nIt may be created subfolders.
Gesamtfortschritt = Overall Progress
Logdatei = Logfile
msg_log = Log file is created`, open now!
titel = Pictures by EXIF rename and move
AbbruchmitESC = Cancel with ESC
Einstellungen = Settings
nur_kopieren = Copy Only`n(Leaves original structure)
zielordner_öffnen_wenn_fertig = Open Target folder when ready`n(Explorer opens last Copy Folder)
Autorotation_der_bilder = Autorotate images`n(When EXIF Orientation info exists, lossless)
gleichnamige_raw_kopieren = Process RAW Copy with same name`n(will be copied/moved to Sub-folder named "RAW")
Return
/*
todo
* überschneidung der ordner prüfen +OK
*/

Post Reply

Return to “Ich brauche Hilfe”