Bilder und Videos sortieren und Duplikate finden
This commit is contained in:
53
bilder_und_videos_sortieren.ps1
Normal file
53
bilder_und_videos_sortieren.ps1
Normal file
@@ -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
|
||||
Reference in New Issue
Block a user