leere Doppel-Ordner
Ich bin mit meinem Nextcloud umgezogen, beim neuen Anbieter hatte der Client leere Ordner erstellt, welche den gleichen Namen des vorherigen Ordners trugen... Mag ein Bug gewesen sein
Generator: Claude Sonnet 4.5
Script starten, Ordnerpfad angeben, dann wird gelistet welche Ordner es trifft (leere Ordner die den gleichen Namen des vorherigen Ordners tragen) und deren Löschung wird angeboten.
Die Löschung ist permanent. Technisch gesehen ist das Löschen von Windows in der GUI ein Verschieben in den Papierkorb. Wollt ihr das müsst ihr das Script von Claude anpassen lassen.
# Nextcloud - Leere doppelte Unterordner finden und löschen
# Findet Ordner, die den gleichen Namen wie ihr Elternordner haben und leer sind
# Farben für bessere Lesbarkeit
function Write-ColorOutput($ForegroundColor) {
$fc = $host.UI.RawUI.ForegroundColor
$host.UI.RawUI.ForegroundColor = $ForegroundColor
if ($args) {
Write-Output $args
}
$host.UI.RawUI.ForegroundColor = $fc
}
Write-Host "`n=== Nextcloud Ordner-Bereinigung ===" -ForegroundColor Cyan
Write-Host "Suche nach leeren Ordnern, die den gleichen Namen wie ihr Elternordner haben...`n" -ForegroundColor Yellow
# Frage nach dem zu durchsuchenden Pfad
$StartPath = Read-Host "Bitte gib den zu durchsuchenden Ordnerpfad ein"
# Prüfe ob Pfad existiert
if (-not (Test-Path $StartPath)) {
Write-Host "`nFEHLER: Der Pfad '$StartPath' existiert nicht!" -ForegroundColor Red
Read-Host "`nDrücke Enter zum Beenden"
exit
}
# Finde alle Ordner rekursiv
$allFolders = Get-ChildItem -Path $StartPath -Directory -Recurse -ErrorAction SilentlyContinue
# Array für problematische Ordner
$duplicateFolders = @()
# Durchsuche alle Ordner
foreach ($folder in $allFolders) {
$parentFolder = Split-Path $folder.FullName -Parent
$parentFolderName = Split-Path $parentFolder -Leaf
$currentFolderName = $folder.Name
# Prüfe ob der Ordnername gleich dem Elternordner ist
if ($currentFolderName -eq $parentFolderName) {
# Prüfe ob der Ordner leer ist (keine Dateien und keine Unterordner)
$itemCount = (Get-ChildItem -Path $folder.FullName -Force -ErrorAction SilentlyContinue | Measure-Object).Count
if ($itemCount -eq 0) {
$duplicateFolders += [PSCustomObject]@{
Pfad = $folder.FullName
Name = $currentFolderName
Elternordner = $parentFolderName
}
}
}
}
# Zeige Ergebnisse
if ($duplicateFolders.Count -eq 0) {
Write-Host "✓ Keine problematischen leeren Ordner gefunden!" -ForegroundColor Green
exit
}
Write-Host "Gefundene leere Ordner mit doppeltem Namen:" -ForegroundColor Yellow
Write-Host ("=" * 80) -ForegroundColor Gray
$counter = 1
foreach ($dup in $duplicateFolders) {
Write-Host "`n[$counter] " -NoNewline -ForegroundColor Cyan
Write-Host "Ordnername: " -NoNewline -ForegroundColor White
Write-Host "$($dup.Name)" -ForegroundColor Yellow
Write-Host " Pfad: " -NoNewline -ForegroundColor White
Write-Host "$($dup.Pfad)" -ForegroundColor Gray
$counter++
}
Write-Host "`n" -NoNewline
Write-Host ("=" * 80) -ForegroundColor Gray
Write-Host "`nGesamt: " -NoNewline -ForegroundColor White
Write-Host "$($duplicateFolders.Count) leere Ordner gefunden" -ForegroundColor Yellow
# Frage ob gelöscht werden soll
Write-Host "`n"
$confirmation = Read-Host "Möchtest du diese Ordner LÖSCHEN? (ja/nein)"
if ($confirmation -eq "ja" -or $confirmation -eq "j" -or $confirmation -eq "yes" -or $confirmation -eq "y") {
Write-Host "`nLösche Ordner..." -ForegroundColor Yellow
$successCount = 0
$errorCount = 0
foreach ($dup in $duplicateFolders) {
try {
Remove-Item -Path $dup.Pfad -Force -ErrorAction Stop
Write-Host "✓ Gelöscht: " -NoNewline -ForegroundColor Green
Write-Host "$($dup.Pfad)" -ForegroundColor Gray
$successCount++
}
catch {
Write-Host "✗ FEHLER bei: " -NoNewline -ForegroundColor Red
Write-Host "$($dup.Pfad)" -ForegroundColor Gray
Write-Host " Grund: $($_.Exception.Message)" -ForegroundColor Red
$errorCount++
}
}
Write-Host "`n" -NoNewline
Write-Host ("=" * 80) -ForegroundColor Gray
Write-Host "`nErgebnis:" -ForegroundColor Cyan
Write-Host " Erfolgreich gelöscht: " -NoNewline -ForegroundColor White
Write-Host "$successCount" -ForegroundColor Green
if ($errorCount -gt 0) {
Write-Host " Fehler: " -NoNewline -ForegroundColor White
Write-Host "$errorCount" -ForegroundColor Red
}
}
else {
Write-Host "`nAbgebrochen. Keine Ordner wurden gelöscht." -ForegroundColor Yellow
}
Write-Host "`n" -ForegroundColor White