CLOUDFLARE — 23:18 UHR
GITHUB — 23:18 UHR
OPENAI — 23:18 UHR
MICROSOFT · #029

Windows 10/11 reparieren: Kleines Diagnose- und Fix-Script

Ein kaputtes Windows-System repariert man nicht nach Bauchgefühl, sondern nach Reihenfolge. Wer zuerst sfc /scannow laufen lässt und danach DISM, repariert im schlimmsten Fall mit einer bereits beschädigten Quelle. Die richtige Reihenfolge lautet: erst der Component Store (DISM), dann die Systemdateien (SFC), erst danach – falls nötig – der Netzwerk-Stack. Dieses Script bildet genau diese Reihenfolge ab, wahlweise einzeln oder komplett am Stück.

Warum die Reihenfolge nicht egal ist

SFC repariert beschädigte Systemdateien, indem es sie aus dem Component Store (WinSxS) ersetzt. Ist dieser Store selbst beschädigt, kopiert SFC im Zweifel fehlerhafte Kopien zurück – der Scan meldet „erfolgreich repariert“, das eigentliche Problem besteht aber weiter. DISM prüft und repariert genau diesen Store, bezieht seine Referenzdaten aber im Zweifel aus Windows Update. Deshalb gilt: erst DISM, dann SFC – nicht umgekehrt.

Der Netzwerk-Reset ist technisch unabhängig davon, gehört aber trotzdem ans Ende: Ein Neustart ist danach ohnehin empfehlenswert (wegen des Winsock-Resets), und den erledigt man sinnvollerweise erst, nachdem alle anderen Reparaturen bereits gelaufen sind.

Das Batch-Script mit Menü

Statt drei einzelne Befehle nacheinander abzutippen, hier ein interaktives Menü. Als Administrator ausführen – das Script prüft das selbst und bricht sonst kontrolliert ab.

Beispielhafte Ausgabe: interaktives Reparatur-Menü

Beispielhafte Darstellung des Menüs (nachgebaut, keine echte Systemausgabe).

@echo off
:: ============================================================
:: Windows 10/11 Diagnose- und Reparatur-Script
:: stefan.punkt IT
:: ============================================================
setlocal EnableExtensions

:: Admin-Check - die meisten Befehle hier brauchen erhoehte Rechte
net session >nul 2>&1
if %errorLevel% NEQ 0 (
    echo Dieses Script muss als Administrator ausgefuehrt werden.
    echo Rechtsklick auf die Datei ^> "Als Administrator ausfuehren"
    pause
    exit /b 1
)

:menu
cls
echo ============================================
echo   Windows Diagnose ^& Reparatur
echo ============================================
echo.
echo  1. SFC - Systemdateien pruefen/reparieren
echo  2. DISM - Component Store pruefen/reparieren
echo  3. Netzwerk zuruecksetzen (IP, DNS, Winsock)
echo  4. Alles nacheinander (empfohlene Reihenfolge)
echo  0. Beenden
echo.
set /p wahl="Auswahl: "

if "%wahl%"=="1" goto sfc
if "%wahl%"=="2" goto dism
if "%wahl%"=="3" goto netzwerk
if "%wahl%"=="4" goto komplett
if "%wahl%"=="0" exit /b 0
goto menu

:sfc
echo.
echo --- SFC Scan startet ---
sfc /scannow
pause
goto menu

:dism
echo.
echo --- DISM Zustandspruefung ---
DISM /Online /Cleanup-Image /ScanHealth
echo.
echo --- DISM Reparatur ---
DISM /Online /Cleanup-Image /RestoreHealth
pause
goto menu

:netzwerk
echo.
echo --- Netzwerk wird zurueckgesetzt ---
netsh winsock reset
netsh int ip reset
ipconfig /release
ipconfig /renew
ipconfig /flushdns
echo.
echo WICHTIG: Jetzt neu starten, sonst wird der Winsock-/IP-Stack-
echo Reset NICHT wirksam. Falls die IP-Adresse danach noch nicht
echo passt, nach dem Neustart einfach Option 3 erneut ausfuehren.
pause
goto menu

:komplett
echo.
echo === Schritt 1/3: DISM Zustandspruefung ===
DISM /Online /Cleanup-Image /ScanHealth
echo.
echo === Schritt 2/3: DISM Reparatur ===
DISM /Online /Cleanup-Image /RestoreHealth
echo.
echo === Schritt 3/3: SFC Scan ===
sfc /scannow
echo.
set /p netz="Zusaetzlich Netzwerk zuruecksetzen? (j/n): "
if /i "%netz%"=="j" goto netzwerk
pause
goto menu

Schritt 1+2: DISM und SFC im Zusammenspiel

Punkt 4 im Menü („Alles nacheinander“) fährt genau die empfohlene Reihenfolge: erst ScanHealth (nur prüfen, nichts verändern), dann RestoreHealth (tatsächliche Reparatur, zieht bei Bedarf Dateien über Windows Update nach), erst danach sfc /scannow.

Beispielhafte Ausgabe: DISM- und SFC-Ablauf

Beispielhafte Darstellung eines erfolgreichen Durchlaufs (nachgebaut, keine echte Systemausgabe).

Meldet DISM einen Fehler wie 0x800f081f (Quelldateien nicht gefunden), fehlt die Internetverbindung zu Windows Update oder ein lokales Reparatur-Image muss als Quelle angegeben werden – dafür gibt es den Zusatzparameter /Source:, der hier bewusst nicht Teil des Scripts ist, weil der Pfad zum Image von Fall zu Fall unterschiedlich ist.

Schritt 3: Netzwerk zurücksetzen

Nur nötig, wenn tatsächlich Netzwerkprobleme vorliegen – bei reinen Systemdatei-Problemen kann dieser Schritt entfallen. Löst DHCP-Lease, DNS-Cache und den Winsock-Katalog (zuständig für die Netzwerk-Schnittstellen-Kommunikation) komplett neu auf.

Beispielhafte Ausgabe: Netzwerk-Reset

Beispielhafte Darstellung (nachgebaut, keine echte Systemausgabe).

Wichtig: Nach netsh winsock reset und netsh int ip reset ist ein Neustart zwingend nötig, damit die Änderungen greifen – das Script weist im Anschluss extra darauf hin.

Die gleichen Befehle in PowerShell

Wer lieber mit PowerShell statt CMD arbeitet: SFC und die netsh-Befehle laufen unverändert auch dort, da PowerShell klassische Konsolenbefehle genauso ausführt. Für DISM gibt es zusätzlich native Cmdlets, die etwas strukturiertere Rückgabewerte liefern (praktisch für eigene Scripts, die den Erfolg auswerten wollen):

# Component Store pruefen (entspricht DISM /ScanHealth)
Repair-WindowsImage -Online -ScanHealth

# Component Store reparieren (entspricht DISM /RestoreHealth)
Repair-WindowsImage -Online -RestoreHealth

# Systemdateien pruefen/reparieren (identisch zu CMD)
sfc /scannow

# Winsock und IP-Stack zuruecksetzen (identisch zu CMD) - zuerst,
# da danach ohnehin ein Neustart noetig ist
netsh winsock reset
netsh int ip reset

# --- Neustart hier durchfuehren, dann erst weiter ---

# IP-Konfiguration anzeigen (pruefen, ob nach dem Neustart alles passt)
Get-NetIPConfiguration

# Netzwerkadapter neu starten (Alternative zu release/renew,
# falls nach dem Neustart noch keine gueltige IP vorhanden ist)
Get-NetAdapter | Restart-NetAdapter

# DNS-Cache leeren (entspricht ipconfig /flushdns) - als letzter Schritt,
# damit keine Eintraege von vor dem Reset haengen bleiben
Clear-DnsClientCache

Ein Unterschied in der Praxis: Repair-WindowsImage gibt ein Objekt zurück, das sich in einem größeren PowerShell-Script direkt auswerten lässt ($ergebnis.RestoreHealthStateValue), während DISM in der Kommandozeile nur Text ausgibt, den man parsen müsste. Für den manuellen Gebrauch macht das keinen Unterschied – relevant wird es erst, wenn man das Ganze in ein größeres Automatisierungs-Script einbetten will.

Kurz zusammengefasst

  • Reihenfolge: DISM vor SFC, nicht umgekehrt – sonst repariert SFC im Zweifel mit einer beschädigten Quelle.
  • Netzwerk-Reset ist ein eigenständiges Problemfeld und gehört ans Ende, nicht in die Mitte der Dateisystem-Reparatur.
  • Nach Winsock-/IP-Reset ist ein Neustart Pflicht, sonst greifen die Änderungen nicht.
  • PowerShell kann alles, was CMD hier kann – für DISM zusätzlich mit strukturierten Rückgabewerten statt reinem Text.