# 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.**

```powershell
# 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
```