Das Sortieren und Ablegen von Bildern, gerade in der Fotografie, fand ich persönlich immer sehr lästig.
Legt man die Bilder nun lieber nach dem Ort ab, dem Datum, oder doch nach der Region oder Partner, mit dem ich unterwegs gewesen bin?
Irgendwann muss man hier eine Lösung für sich selbst finden und ich möchte euch meine aktuelle Lösung hierzu gerne vorstellen.
Allgemein unterscheide ich hierbei unter den folgenden Punkten:
- Mobile Fotos (Handy)
- Fotos von meiner Kamera
Mobile Fotos
Die mobilen Fotos landen bei mir alle in meiner persönlichen Nextcloud – hierbei lege ich großen Wert darauf, dass die Bilder automatisch hochgeladen werden und in den entsprechenden Monatsordner abgelegt werden. Eine tagesgenaue Ablage mache ich hierbei nicht, da ich ansonsten zu schnell die Übersicht verliere – zudem bekommt man auch ab und an Bilder, welche man so auch wieder schneller löschen kann (z.B. Foto von Essen in einem Restaurant eines Freundes – am Anfang freut man sich, dass der Freund / die Freundin die Bilder geteilt haben, aber wenn man nichts selbst damit verbindet oder mal ebenfalls dort essen möchte, sind die Bilder zumindest nach 2-3 Jahren eher uninteressant).
Bilder von meiner Kamera
Die Bilder von meiner Kamera lege ich nach einem bestimmten Datumsschema ab, welches wie folgt aussieht:
Jahr –> Monat –> Tag
Sofern ich noch Interesse habe, schreibe ich bei dem entsprechenden Tag auch noch den Ort dazu, sodass ich später beim durchstöbern noch weiß, wo es gewesen ist. Zudem muss ich gestehen, dass ich die Bilder gerne über einen längeren Zeitraum auf meiner SD Karte belasse und danach das Sortieren etwas anstrengender werden könnte – aber nein, nicht bei mir!
Automatische Bildsortierung
Die Bilder lasse ich mir mittels eines Scriptes automatisch nach dem Tag sortieren und kopiere diese später ebenfalls auf meinen Nextcloudspeicher. Wobei ich hier noch ein bisschen mehr Technik im Spiel habe, aber dazu in Zukunft mehr.
Das Powershell Script, welches ich zum sortieren der Bilder verwende, lautet wie folgt:
[string] $outputDirectoy = "Archiv";
[string] $currentDir = Split-Path $MyInvocation.MyCommand.Path
function Get-FilesInDirectory {
Param(
[string]$directory,
[string]$fileExtension
)
$dir = Get-Item -Path $directory;
$shell = new-object -com Shell.Application;
$folder=$shell.Namespace($dir.FullName)
Write-Host("Start archiving...");
foreach($file in $folder.Items()) {
#check for fileExtension
$fileExt = ([System.IO.Path]::GetExtension($file.Name)).Trim(".").ToLower();
if(!($fileExtension -eq $fileExtension.Trim("*").Trim(".").ToLower())) {
continue;
}
#MetaData ID for Date taken
$takenDateId = 12;
$takenDate = $folder.GetDetailsOf($file, $takenDateId)
if(($takenDate -eq $null) -or ($takenDate.ToString() -eq [String]::Empty)) {
continue;
}
#get ascii string and replace '?'
$asci = [System.Text.Encoding]::ASCII
$asciDate = $asci.GetString($asci.GetBytes($takenDate))
#Write-Host("Ascistring: " + $asciDate );
$date= $asciDate -replace '\?'
$date = [DateTime]::Parse($date);
#Write-Host("Parsingdate: " + $date.ToString("yyyy-MM-dd") );
#creates target directory
$targetDirectory = New-ArchiveDirectory "$currentDir\$outputDirectoy" $date;
#Write-Host("Target directory: $targetDirectory .");
#copies files to target directory
$filePath = $file.Path;
#Write-Host("copy file: $filePath to directory: $targetDirectory .");
try {
Move-Item $filePath $targetDirectory -Force
}
catch {
Write-Host ("Error while copying file: $filePath (" + $_.ToString() + ")");
}
}
Write-Host("Archiving finished.");
}
function New-ArchiveDirectory {
param
(
[string]$outputDirectory,
[DateTime]$date
)
# year directory
$year = $date.Year
[string]$newDir = "$outputDirectory\$year"
if(!(Test-Path $newDir) ) {
New-Item -Path "$newDir" -ItemType directory | Out-Null
}
# month directory
$month = $date.Month.ToString("00")
$newDir += "\$month"
if(!(Test-Path $newDir) ) {
New-Item -Path "$newDir" -ItemType directory | Out-Null
}
# day directory
$day = $date.ToString("dd");
$newDir += "\$day"
if(!(Test-Path $newDir) ) {
New-Item -Path "$newDir" -ItemType directory | Out-Null
}
return $newDir;
}
Get-FilesInDirectory "$currentDir"
Dieses Script legt unter dem Hauptverzeichnis einen neuen Ordner mit dem Namen „Archiv“ an und speichert darauf folgend die Bilder in die entsprechenden Unterordner.
Für mich ist dieses Vorgehen sehr praktikabel und spart mir vor allem Zeit.
Datensicherung
Auch die Sicherung der Daten ist für mich ein sehr wichtiger Punkt – hierauf werde ich in Kürze in einem separaten Beitrag eingehen.