Fehler im Bambu Studio unterwünschte Filamente beheben

AlanK

Vice Admiral
✍️Leserartikel-Schreiber
Registriert
Nov. 2009
Beiträge
6.738
Hallo liebe Bambu Lab Drucker Freunde,

für ein nerviges Problem, hier eine einfache Lösung, mit Script und Dokumentation.

Ausgangssituation:
Nach jedem Update von Bambu Studio fügt Bambu Lab wieder Profile für PolyLite, Polymaker & PolyTerra, Overture und eSun hinzu.

Besonders nervig, die Profile liegen im %AppData% wie auch Systemverzeichnis, in Program Files und lassen sich von vielen Usern nicht (!) bei System-Filamente im Slicer dauerhaft entfernen.
Obwohl es diese Option theoretisch gibt, übernimmt er die Einstellungen nicht, oder man wird zumindest bei einem Software-Update wieder damit zwangsbeglückt.
(Diese Fehler werden bei Github oder im Bambu Lab Forum auch gemeldet, scheinbar aber seit mehreren Versionen nicht behoben)

Screenshot 2026-08-18 164712.png


Vor dem Script:
unerwuenschtes Filament.png


Nach dem Script:

unerwuenschtes Filament_after.png


Am besten in Notepad oder Notepad++ als *.ps1 speichern Pfad merken und mit Befehl unten als Administrator ausführen, Bamulab Studio muss natürlich auch geschlossen sein.


Der Code ist PowerShell, benötigt Admin Rechte, ihr könnt den Code selbst einsehen und prüfen, kein Download.
Was macht das Tool?
  • Es prüft als erstes ob Admin Rechte (Löschrechte) vorhanden sind.
  • Fragt dann im Menü ab, welche Profile der Filament-Hersteller unerwünscht sind und gelöscht werden sollen.
  • Löscht dann im %AppData% Profilordner des angemeldeten (!) Users die unerwünschten *.json Dateien
  • Löscht im Program Files Ordner von Bambu Lab die Profile der Fremdhersteller, die ihr im Menü auswählt
    Beibehalten wird immer Bambu Lab, Sunlu und Generic
  • Explizit werden nur *.json Dateien gelöscht, Benutzerdefinierte Profile anderer Hersteller, Einstellungen eurer Nozzle etc. alles bleibt erhalten.
    Dennoch: Sicherheitskopie und Vorsicht ist der Mutter der Porzelankiste.

Hier der Code des PowerShell Scripts
Code:
[Console]::OutputEncoding=[System.Text.Encoding]::UTF8
[Console]::InputEncoding=[System.Text.Encoding]::UTF8

while ($true) {
    Clear-Host
    Write-Host @'
  ____                  _  
 |  _ \                | |
 | |_) | __ _ _ __ ___ | |__  _   _
 |  _ < / _` | '_ ` _ \| '_ \| | | |
 | |_) | (_| | | | | | | |_) | |_| |
 |____/ \__,_|_| |_| |_|_.__/ \__,_|
  _____ _             _ _  
 / ____| |           | (_)
| (___ | |_ _   _  __| |_  ___
 \___ \| __| | | |/ _` | |/ _ \
 ____) | |_| |_| | (_| | | (_) |
|_____/ \__|\__,_|\__,_|_|\___/
'@ -ForegroundColor Green
    Write-Host "`n================================================================================"
    Write-Host "--- BAMBU STUDIO BEREINIGUNGSTOOL ---" -ForegroundColor Cyan
    Write-Host "--- Dieses Script entfernt unerw$([char]0x00FC)nschte Filamente aus dem Bambu Lab Studio v 1.4 ---" -ForegroundColor Cyan
    Write-Host "================================================================================"

    # Administrator-Prüfung
    $isAdmin = ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
    if (-not $isAdmin) {
        Write-Host "`n[WICHTIGER HINWEIS]" -ForegroundColor Red
        Write-Host "Einige Dateien k$([char]0x00F6)nnen nur entfernt werden, wenn PowerShell als Administrator gestartet wurde und Bambu Studio geschlossen ist." -ForegroundColor Red
        Write-Host "Zur Zeit hat das Script keinen vollen Schreibzugriff." -ForegroundColor Red
    }

    $p=@("$env:USERPROFILE\AppData\Roaming\BambuStudio\system\BBL\filament","C:\Program Files\Bambu Studio\resources\profiles\BBL\filament")
    $sub=@("$env:USERPROFILE\AppData\Roaming\BambuStudio\system\BBL\filament\P1P","$env:USERPROFILE\AppData\Roaming\BambuStudio\system\BBL\filament\Polymaker")

    Write-Host "`n W$([char]0x00E4)hle eine Option aus:" -ForegroundColor Gray
    Write-Host ""
    Write-Host " [1] PolyLite, Polymaker & PolyTerra" -ForegroundColor DarkYellow
    Write-Host " [2] Overture" -ForegroundColor Cyan
    Write-Host " [3] eSun" -ForegroundColor Yellow
    Write-Host " [4] Alle Profile (PolyLite, Polymaker, Overture, eSun)" -ForegroundColor Green
    Write-Host " [0] BEENDEN & keine $([char]0x00C4)nderungen durchf$([char]0x00FC)hren" -ForegroundColor Red

    $c=Read-Host "`n Deine Auswahl"
    if($c -eq '0'){ exit }
 
    $t=@()
    switch($c){
    '1'{$t=@("PolyLite","Polymaker","PolyTerra")};'2'{$t=@("Overture")};'3'{$t=@("eSun")};'4'{$t=@("PolyLite","Polymaker","PolyTerra","Overture","eSun")}
    Default{Write-Host "Ung$([char]0x00FC)ltige Auswahl!" -ForegroundColor Red; Start-Sleep 2; continue }
    }
 
    if((Read-Host "`nSICHERHEITSABFRAGE: Wirklich l$([char]0x00F6)schen? (J/N)") -notmatch '^[JjYy]$'){
        Write-Host "`nAbbruch, kehre zum Men$([char]0x00FC) zur$([char]0x00FC)ck..." -ForegroundColor Gray
        Start-Sleep -Seconds 2
        continue
    }

    $cnt=0
    $accessError=$false

    foreach($d in $p){
        if(Test-Path $d){
            $files=Get-ChildItem $d -Filter "*.json" -File
            foreach($f in $files){
                $del=$false
                # Die gefährliche Negativ-Prüfung wurde entfernt.
                # Stattdessen gleicht Option 4 nun alle bekannten Marken sicher ab.
                foreach($term in $t){if($f.Name -like "*$term*"){$del=$true}}
     
                if($del){
                    try {
                        Set-ItemProperty $f.FullName -Name IsReadOnly -Value $false -ErrorAction Stop
                        Remove-Item $f.FullName -Force -ErrorAction Stop
                        $cnt++
                    } catch {
                        $accessError=$true
                    }
                }
            }
        }
    }
    foreach($f in $sub){
        if(Test-Path $f){
            try {
                Remove-Item $f -Recurse -Force -ErrorAction Stop
            } catch {
                $accessError=$true
            }
        }
    }

    Write-Host "`n[ERFOLG] $cnt Dateien und Ordner verarbeitet." -ForegroundColor Green

    if($accessError){
        Write-Host "`n[FEHLER] Nicht alle Dateien wurden restlos gel$([char]0x00F6)scht, weil du das Script nicht mit Administrator-Rechten gestartet hast (oder Bambu Studio noch ge$([char]0x00F6)ffnet ist)." -ForegroundColor Red
        Write-Host "Kehre zum Men$([char]0x00FC) zur$([char]0x00FC)ck..." -ForegroundColor Gray
        Start-Sleep -Seconds 6
    } else {
        Write-Host "Kehre zum Men$([char]0x00FC) zur$([char]0x00FC)ck..." -ForegroundColor Gray
        Start-Sleep -Seconds 6
    }
}

Code:
#!/bin/zsh

while true; do
    clear
    echo -e "\033[0;32m"
    cat << 'EOF'
  ____                  _            
 |  _ \                | |          
 | |_) | __ _ _ __ ___ | |__  _   _  
 |  _ < / _` | '_ ` _ \| '_ \| | | |
 | |_) | (_| | | | | | | |_) | |_| |
 |____/ \__,_|_| |_| |_|_.__/ \__,_|
  _____ _             _ _            
 / ____| |           | (_)          
| (___ | |_ _   _  __| |_  ___      
 \___ \| __| | | |/ _` | |/ _ \      
 ____) | |_| |_| | (_| | | (_) |    
|_____/ \__|\__,_|\__,_|_|\___/      
EOF
    echo -e "\033[0m"
    echo -e "\033[0;36m================================================================================\033[0m"
    echo -e "\033[0;36m--- BAMBU STUDIO BEREINIGUNGSTOOL (macOS) ---\033[0m"
    echo -e "\033[0;36m--- Dieses Script entfernt unerwünschte Filamente aus dem Bambu Lab Studio ---\033[0m"
    echo -e "\033[0;36m================================================================================\033[0m\n"

    # Pfade unter macOS
    APP_DIR="/Applications/BambuStudio.app/Contents/Resources/profiles/BBL/filament"
    USER_DIR="$HOME/Library/Application Support/BambuStudio/system/BBL/filament"
   
    # Rechte-Prüfung für das App-Bundle
    if [ -d "$APP_DIR" ] && [ ! -w "$APP_DIR" ]; then
        echo -e "\033[0;31m[WICHTIGER HINWEIS]\nEinige Dateien können nur entfernt werden, wenn das Script mit Admin-Rechten (sudo) ausgeführt wird.\nZur Zeit hat das Script keinen vollen Schreibzugriff auf den Programmordner.\033[0m\n"
    fi

    echo -e "\033[0;90m Wähle eine Option aus:\033[0m\n"
    echo -e "\033[0;33m [1] PolyLite, Polymaker & PolyTerra\033[0m"
    echo -e "\033[0;36m [2] Overture\033[0m"
    echo -e "\033[1;33m [3] eSun\033[0m"
    echo -e "\033[0;32m [4] Alle Profile (PolyLite, Polymaker, Overture, eSun)\033[0m"
    echo -e "\033[0;31m [0] BEENDEN & keine Änderungen durchführen\033[0m"
   
    echo ""
    printf " Deine Auswahl: "
    read choice
   
    if [[ "$choice" == "0" ]]; then
        exit 0
    fi
   
    terms=()
    case "$choice" in
        1) terms=("PolyLite" "Polymaker" "PolyTerra") ;;
        2) terms=("Overture") ;;
        3) terms=("eSun") ;;
        4) terms=("PolyLite" "Polymaker" "PolyTerra" "Overture" "eSun") ;;
        *) echo -e "\033[0;31mUngültige Auswahl!\033[0m"; sleep 2; continue ;;
    esac
   
    echo ""
    printf " SICHERHEITSABFRAGE: Wirklich löschen? (J/N): "
    read confirm
    if [[ ! "$confirm" =~ ^[JjYy]$ ]]; then
        echo -e "\033[0;90mAbbruch, kehre zum Menü zurück...\033[0m"
        sleep 2
        continue
    fi

    count=0
    accessError=0

    # JSON Dateien in beiden Pfaden löschen
    for target_dir in "$USER_DIR" "$APP_DIR"; do
        if [ -d "$target_dir" ]; then
            for term in "${terms[@]}"; do
                while IFS= read -r file; do
                    if rm -f "$file" 2>/dev/null; then
                        ((count++))
                    else
                        accessError=1
                    fi
                done < <(find "$target_dir" -type f -name "*${term}*.json" 2>/dev/null)
            done
        fi
    done

    # P1P und Polymaker Unterordner löschen
    for sub in "P1P" "Polymaker"; do
        if [ -d "$USER_DIR/$sub" ]; then
            if rm -rf "$USER_DIR/$sub" 2>/dev/null; then
                :
            else
                accessError=1
            fi
        fi
    done

    echo -e "\n\033[0;32m[ERFOLG] $count Dateien und Ordner verarbeitet.\033[0m"

    if [ $accessError -eq 1 ]; then
        echo -e "\n\033[0;31m[FEHLER] Nicht alle Dateien wurden restlos gelöscht, da Rechte fehlen oder Bambu Studio geöffnet ist.\033[0m"
        echo -e "\033[0;90mKehre zum Menü zurück...\033[0m"
        sleep 6
    else
        echo -e "\033[0;90mKehre zum Menü zurück...\033[0m"
        sleep 3
    fi
done

Zum Ausführen PowerShell als Admin öffnen (Bambu Lab Studio ist geschlossen)
Code:
powershell.exe -ExecutionPolicy Bypass -File "Pfad zum PowerShell Script.ps1"

-ExecutionPolicy Bypass bedeutet in diesem Fall, dass ihr den Vorgang "Execution Policy" nur für diese eine Ausführung eurer erstellten *.ps1 einmalig aufhebt und logischerweise nicht dauerhaft.

Getestet mit Bambu Lab Studio 2.6.x, 2.7.x, 2.8.x unter Windows 11, Bambu Lab X1C und A1 Mini (Privat) und H2D (beruflich).

Möglicherweise schreibe ich ein ähnliches Script demnächst noch für macOS.
Transparenz, für Hilfe bei derErstellung des Menüs in der PowerShell habe ich KI Funktionen genutzt.

Gern Feedback & Noch einmal: Vorsicht & Backup ist in der Regel euer Freund.
Sollte es dennoch wider Erwarten Probleme geben, einfach den Bambu Lab Studio Installer wieder "drüberbügeln", und alle Filamente sind wieder vorhanden, auch die möglicherweise unerwünschten.

Das Script darf frei verändert werden, ich verzichte bewußt auf Hinweise zum Autor, weil mir, nicht vollständig ohne KI Unterstützung, Lorbeeren zustehen.
Bei Veröffentlichung in anderen Foren, Github oder Sonstiges freue ich mich aber über Verlinkung und Hinweise der Quelle (Computerbase-Forenlink zu diesem Beitrag).


Einschränkungen:

  • Setzt unter Windows den Standard-Pfad auf Laufwerk C: voraus, ansonsten muss der Pfad angepasst werden.
    (Zeile 33 und 34)
  • An macOS Version setzt den Standard-Pfad voraus und Datei muss mit chmod +x noch ausführbar gemacht werden. Gespeichert werden muss dies dann als BBL.command

Changelog:

  • Version 1.1 Warnmeldung wenn keine Admin-Rechte oder Löschproblem wegen offenem Bambu Lab Studio
  • Version 1.2 Menü eingebaut und farblich aufgefrischt
  • Version 1.3 mit Negativ Prüfung bei Option 4
  • Version 1.4 Final mit Sicherheitsprüfung und Abgleich der Marker der unerwünschten Profile
    (KI Gegenprüfung meines Scripts, war ein Vorschlag der KI nicht auf Badword zu setzen)
  • Version 1.5 Version für macOS hinzugefügt, separter Spoiler Tag
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: MaverickM, ChatGehPeeTee, whats4 und eine weitere Person
Man muß diese Firma einfach lieb haben. :volllol:
Gut, daß es Alternativen gibt, die ihre Kunden respektieren.

Auch wenn ich keine Bambus nutze, danke für deine Arbeit, die anderen sicher den Umgang mit den Druckern etwas erleichtert.
 
  • Gefällt mir
Reaktionen: areiland
Hab mal eben nachgeguckt.. dort liegen etwa 94 kilobyte rum.
Mir is das nie als Fehler aufgefallen :D weil ich grundsätzlich alle Filamente aktiviere.
Aber gut, dass es Abhilfe schafft.
 
Zurück
Oben