• Herzlich willkommen im "neuen" DSLR-Forum!

    Wir hoffen, dass Euch das neue Design und die neuen Features gefallen und Ihr Euch schnell zurechtfindet.
    Wir werden wohl alle etwas Zeit brauchen, um uns in die neue Umgebung einzuleben. Auch für uns ist das alles neu.

    Euer DSLR-Forum-Team

  • In eigener Sache!

    Liebe Mitglieder, liebe Besucher und Gäste
    ich weiß, es ist ein leidiges Thema, aber ich muss es ansprechen: Werbung, Werbeblocker und Finanzierung des Forums.
    Bitte hier weiterlesen ...

  • DSLR-Forum Fotowettbewerb neu erfunden!
    Nach wochenlanger intensiver Arbeit an der Erneuerung des Formates unseres internen Fotowettbewerbes ist es Frosty als Moderator
    und au lait als Programmierer gelungen, unseren Wettbewerb auf ein völlig neues Level zu heben!
    Lest hier alle Infos zum DSLR-Forum Fotowettbewerb 2.0
    Einen voll funktionsfähigen Demowettbewerb kannst du dir hier ansehen.
  • Neuer Partner: AkkuShop.de
    Akkus, Ladegeräte und mehr (nicht nur) für Digitalkameras und Drohnen
  • Neuer Gutscheincode unseres Partners Schutzfolien24:
    DSLR-Forum2024
    Dauerhaft 10% Rabatt auf alle Displayschutzfolien der Eigenmarken "Upscreen", "Brotec", "Savvies".
    Der Code ist für alle Geräteklassen gültig.
  • Stimmt ab über die Sieger des DSLR-Forum Fotowettbewerbs März 2024.
    Thema: "Arbeitsmittel"

    Nur noch bis zum 31.03.2024 23:59!
    Jeder darf abstimmen!
    Zur Abstimmung und Bewertung hier lang
  • Frohe Ostern!

    Wir wünschen allen DSLR-Forum Nutzern, ihren Familien und Freunden sowie unseren Sponsoren und Partnern und deren Familien und Freunden ein frohes Osterfest.

    Euer DSLR-Forum Team!
WERBUNG

Foto Import mit Ordner Erstellung, Umbenennung und Exif Verarbeitung

Oisin-D90

Themenersteller
Hallo,

ich hab ein PowerShell Script geschrieben, das Fotos von einem Ordner in eine andere Struktur kopiert, die Ordner benennt und die Dateien umbenennt. Ein paar Exif Infos werden aus den Tags ausgelesen und in's Kommentarfeld geschrieben.

Hintergrund: Alle meine Fotos werden aus meinem Foto Ordner direkt in ein Backup geschrieben. Die Fotos kann ich natürlich mit CaptureOne importieren und umbenennen. CaptureOne zeigt mir aber ein paar Exif Infos nicht an (Fokusfeld, VR Einstellung, AF Area Mode, etc...). Wenn ich die Infos nachträglich mit ExifTool in's Kommentarfeld schreibe, würde noch mal der Backup Prozess angestoßen werden.

Das Script macht folgendes:
- Alle Fotos aus den Unterordnern, wo das Script liegt, werden in meinen Fotos Ordner kopiert
- Es gibt einen "Basis-Ordner", mein Fotos Ordner
- Das Script fragt nach einem Unterordner in dem Basisordner, der angelegt wird, falls angegeben
- Befindet sich im Namen der Unterordner ein doppelter Bindestrich, wird daraus im Ziel eine Unterordner-Struktur erstellt und das Datum des 1. Fotos eingefügt: aus "Maike--Spree" mit Fotos vom 28.9.2018 wird "Maike\2018-09-28-Spree\"
- Ohne doppelte Bindestriche wird der Unterordnername als Ordnername im Basis-Ordner verwendet
- Der Unterordnername oder der Teil nach dem -- wird als Sessionname verwendet und in den Dateinamen verwendet. Das Aufnamedatum des Bildes wird auch in den Dateinamen kopiert und eine 4-Stellige Nummer angehängt. Also aus Unterordner "Maike--Spree" werden alle Fotos in "Spree-2018-09-28-xxxx.nef" umbenannt

Die Ordnernamen/ Sessionnamen werden vom PowerShell Script ermittelt. Das Anlegen der Ordner, die Umbenennung, das Kopieren und das Schreiben der Exif Kommentare übernimmt das ExifTool.
Die Original Dateien verbleiben an ihrem Quellort und werden nicht manipuliert.

Die Schwierigkeit war eigentlich die Zeichenumwandlung, um den ExifTool Befehl zusammenzubauen.

Verbesserungen:
- Dateien von der Speicherkarte einlesen und die Ordnerstruktur per Eingabeaufforderung abfragen
- Schlüsselwörter von der Eingabeaufforderung abfragen und in die Dateien einfügen (vergesse ich immer ;-))

Das Script findet ihr im Anhang, vielleicht kann es jemand gebrauchen. Baut es gerne um.

Bitte beachtet, dass ich es nicht eingehend auf mögliche Fehlerquellen getestet habe. Speziell, wenn ein Exif-Tag für das Beschreibungsfeld nicht vorhanden ist, wird gar kein Kommentar geschrieben. Der Kopiervorgang sollte aber trotzdem durchgeführt werden.

Verwendung: Den Code unten in eine Textdatei kopieren. Die Endung in .ps1 umbenennen.

PHP:
$targetBaseDir = "f:\Fotos2\"
$currDir = Split-Path $MyInvocation.MyCommand.Path

$commentCommand = "`"-description`<ShootingMode: ```$ShootingMode; AFAreaMode: ```$AFAreaMode; AFPointsUsed: ```$AFPointsUsed; AF-CPrioritySelection: ```$AF-CPrioritySelection; AFFineTune: ```$AFFineTune; AFFineTuneAdj: ```$AFFineTuneAdj; VR: ```$VibrationReduction`""


Write-Host "Target Sub Dir below $($targetBaseDir): "
$targetSubDir = Read-Host 

$sourceSubFolders = get-childitem $currDir -Directory

$sourceSubFolders | %{ 

    $currSourceFolder = $_.FullName
   
    $_.FullName

    $files = Get-ChildItem $currSourceFolder -File #-Filter "*.nef"

    if($files.Count -ge 1) {
        $firstFile = $files[0]

        $firstDatetime = Invoke-Expression "& exiftool -d %Y-%m-%d -datetimeoriginal $($firstFile.FullName)"
        $folderPrefix = ($firstDatetime.Split(":")[1]).Replace(" ", "")

        if($_.Name -like "*--*") {
            $sessionName = $_.Name.Split("--")[2]
            $sessionFolder = "$($_.Name.Split("--")[0])\$($folderPrefix)-$($sessionName)"
        } else {
            $sessionName = $_.Name
            $sessionFolder = $sessionName
        }


        if($targetSubDir -ne "") {
            $currTargetDir = "$($targetBaseDir)$($targetSubDir)\$($sessionFolder)\"
        } else {
            $currTargetDir = "$($targetBaseDir)$($sessionFolder)\"
        }
        
        $exiftoolCommand = "& exiftool -d %Y-%m-%d `"-FileName<$sessionName-```${datetimeoriginal}%-.4c.%e`" -directory=$($currTargetDir) $($commentCommand) $($currSourceFolder) -o . -charset filename=utf8"
        write-host $exiftoolCommand
        Invoke-Expression $exiftoolCommand
    }
}
 
WERBUNG
Zurück
Oben Unten