Als je me wat langer kent dan vandaag dan weet ik vooral in het verleden heel veel heb gedaan met fotografie. Ik had zelfs een eigen fotografie bedrijf. Het leek me leuk om daarom een keer iets te delen over het sorteren van foto’s. In dit geval laat je PowerShell voor je werken.

Hieronder deel ik een mini aantal foto’s van mijn werk :)!

Nu heb ik nog steeds veel liefde voor fotografie maar vooral op hobbybasis en eigenlijk zoveel mogelijk gewoon met mijn telefoon en het vastleggen van mijn eigen gezin, leuke familie uitjes, werk geluksmomentjes en vrienden kiekjes! Het grootste probleem dat ik heb zijn het opruimen en sorteren van mijn foto’s. Ze staan allemaal in 1 grote map in bestanden en wanneer ik 1x in het jaar of 1x in de 2 jaar (als ik geluk heb) denk ik ga eens een fotoboek maken ben ik ruim een week bezig om een fotoboek te maken en alles te sorteren op datum en relevanie. Had ik mijn foto’s maar eerder gesorteerd en het niet zo lang opgespaard.

Heb je meerdere jaren aan foto’s dan is dit een mooi script dat je zeker kunt gebruiken. Gebruik alle foto’s en zet ze automatisch in een folder gebaseerd op een jaartal. Je kunt natuurlijk ook onderin het pad veranderen van Year naar Month. Dan sorteer je je foto’s per maand.

In de volgende stappen leg ik uit hoe je deze foto’s in een map op jaartal kunt krijgen.

  1. Stel in waar de foto’s vandaan komen en waar je ze heen wilt schrijven.
# Source folder
$sourcePath = "C:\Users\FemkeCornelissen\Pictures\Photos"


# Target Folder
$targetPath = "C:\Users\FemkeCornelissen\Pictures\2022"

2. Maak counters zodat we weten wat resultaten zijn.

$fileCounter = 0
$albumCounter = 0

3. Bestanden ophalen in de bronmap, inclusief submappen, gesorteerd op datum.

# Get all files, sort by date
$files = Get-ChildItem $sourcePath -Recurse | where {!$_.PsIsContainer} | sort LastWriteTime

4. Doorloop elk bestand om het jaartal te krijgen, maak zo nodig een doelmap en kopieer het bestand indien nodig. Ik gebruik Copy-Item, maar je kunt dit wijzigen in Move-Item als je de foto wilt verplaatsen.

# Iterate files 
foreach ($file in $files)
{
    # Get year 
    $year = $file.LastWriteTime.Year.ToString()


    # Set album Path
    $album = $targetPath + "\" + $year
    # Create path if it doesn't exsist
    if (!(Test-Path $album))
    {
      New-Item $album -type directory
      Write-Host "[Created]" $Album -ForegroundColor Cyan 
      $albumCounter++      
    }
 
    # Copy File to new location
    if (!(Test-Path $album"\"$file))
    {
      $file | Copy-Item -Destination $Album
      Write-Host "[New in" $year"]" $file -ForegroundColor Green
      $fileCounter++
    }
    else 
    {
      Write-Host "[Exists in" $year"]" $file -ForegroundColor Gray       
    }

} 
Gesorteerd op jaartal

Dat is het! Je kunt Windows Scheduler gebruiken om dit script periodiek uit te voeren.

Je kunt ook je foto’s automatisch uploaden naar een SharePoint met met Power Automate. https://powerautomate.microsoft.com/nl-NL/templates/details/6b7d1e60e4a94b30a9a68dde5e4f54cd/fotos-uploaden-naar-een-sharepoint-map/

Of naar een Onedrive map https://powerautomate.microsoft.com/nl-NL/templates/details/050fc92d1a7b48ef86dd71a43b36890d/fotos-uploaden-naar-onedrive-voor-bedrijven/. Dit zijn standaard sjablonen in PowerAutomate.