diff --git a/bilder_und_videos_sortieren.ps1 b/bilder_und_videos_sortieren.ps1 new file mode 100644 index 0000000..1c3c2b6 --- /dev/null +++ b/bilder_und_videos_sortieren.ps1 @@ -0,0 +1,53 @@ +# Ordnerpfad angeben +$sourceFolder = Read-Host -Prompt "Bitte geben Sie den Pfad des Quellordners an" +$duplicatesFolder = Join-Path -Path $sourceFolder -ChildPath "Duplikate" + +# Überprüfen, ob der Quellordner existiert +if (-Not (Test-Path -Path $sourceFolder)) { + Write-Host "Der angegebene Ordner existiert nicht." -ForegroundColor Red + exit +} + +# Überprüfen, ob der Duplikate-Ordner existiert, andernfalls erstellen +if (-Not (Test-Path -Path $duplicatesFolder)) { + New-Item -Path $duplicatesFolder -ItemType Directory | Out-Null +} + +# Alle Bilddateien im Ordner abrufen +$images = Get-ChildItem -Path $sourceFolder -File -Include *.jpg, *.jpeg, *.png, *.gif, *.bmp + +# Hashtable zum Speichern von Hashes der Bilder +$hashTable = @{} + +foreach ($image in $images) { + # Erstelldatum des Bildes abrufen + $creationDate = (Get-Item $image.FullName).CreationTime + + # Jahr und Monat aus dem Erstelldatum extrahieren + $year = $creationDate.ToString('yyyy') + $month = $creationDate.ToString('MM') + + # Zielunterordner nach Jahr und Monat erstellen + $targetFolder = Join-Path -Path $sourceFolder -ChildPath "$year\$month" + if (-Not (Test-Path -Path $targetFolder)) { + New-Item -Path $targetFolder -ItemType Directory | Out-Null + } + + # Bild-Hash berechnen, um Duplikate zu identifizieren + $hash = (Get-FileHash -Path $image.FullName -Algorithm MD5).Hash + + if ($hashTable.ContainsKey($hash)) { + # Bild ist ein Duplikat, in den Duplikate-Ordner verschieben + $duplicateDestination = Join-Path -Path $duplicatesFolder -ChildPath $image.Name + Move-Item -Path $image.FullName -Destination $duplicateDestination + Write-Host "Duplikat '$($image.Name)' wurde nach '$duplicatesFolder' verschoben." -ForegroundColor Yellow + } else { + # Bild ist kein Duplikat, in den Zielordner verschieben + $hashTable[$hash] = $image.FullName + $destinationPath = Join-Path -Path $targetFolder -ChildPath $image.Name + Move-Item -Path $image.FullName -Destination $destinationPath + Write-Host "Bild '$($image.Name)' wurde nach '$targetFolder' verschoben." -ForegroundColor Green + } +} + +Write-Host "Alle Bilder wurden erfolgreich in entsprechende Unterordner verschoben. Duplikate wurden in den Ordner 'Duplikate' verschoben." -ForegroundColor Cyan \ No newline at end of file