Foto’s sorteren met PowerShell op basis van EXIF informatie

Misschien heb je het zelf ook ooit eens voorgehad en dan weet je hoe onprettig het is: Je hebt duizenden foto’s van jaren ver netjes onderverdeeld in mapjes en submapjes en om een of andere reden krijg je ze allemaal netjes onder elkaar met een nietszeggende naam in één map. Met het powershell scriptje hieronder kan je alvast die vele duizenden bestanden terug in mapjes plaatsen op basis van het tijdstip waarop ze genomen werden.  Tenminste voor zover de bestanden EXIF informatie bevatten (elk deftig toestel van de laatste 5 jaar plaatst dit in elk foto die gemaakt wordt).

Om dit scriptje te kunnen uitvoeren heb je wel de image module nodig die je als onderdeel van het PowerShellPack vindt. Downloaden kan hier : http://archive.msdn.microsoft.com/PowerShellPack  Controleren of je de module hebt kan met dit commando (psimagetools)

Get-Module -ListAvailable
De module inladen (kan eventueel als eerste lijntje in het script toegevoegd worden) kan met het commando
Import-Module PSImageTools
En dan is dit het scriptje die de bestanden maand per maand in mapjes plaatst
$bestanden = get-childitem "d:testps" |
                          where {$_.extension -eq ".jpg"}
foreach ($bestand in $bestanden)
{
  $datum = ((Get-Image $bestand | Get-ImageProperty).dt);
  $maand = $datum.month
  $jaar = $datum.year;

  if (!(Test-Path "d:testps$jaar-$maand"))
  {
     md $jaar-$maand;
  }
  Move-Item $bestand "d:testps$jaar-$maand";
}