Windows-Wartungsmenü
Die wichtigsten Reparatur-Befehle in einem Menü: Systemdateien prüfen (sfc), Windows-Abbild reparieren (DISM), Laufwerk prüfen (chkdsk), DNS-Cache leeren, Netzwerk zurücksetzen, temporäre Dateien und Windows-Update-Cache leeren. Mit Rückfragen bei kritischen Schritten und Protokolldatei. Benötigt Administratorrechte.
SHA-256:
110c24770386980abd64c988fe2b841e0f23e76e4cc7a8e0f5043f35d5d06ac0 Code
So sieht die Datei aus, die Sie herunterladen (142 Zeilen). Die Kommentare oben im Skript erklären, was es tut.
@echo off
rem ==========================================================================
rem Windows-Wartungsmenue Version 1.0, Oktober 2026
rem https://friederich-it.de/downloads
rem
rem Die wichtigsten Reparatur- und Aufraeum-Befehle in einem Menue:
rem 1 Systemdateien pruefen und reparieren (sfc /scannow)
rem 2 Windows-Abbild reparieren (DISM /RestoreHealth)
rem 3 Laufwerk C: auf Fehler pruefen (chkdsk C: /scan, ohne Neustart)
rem 4 DNS-Zwischenspeicher leeren (ipconfig /flushdns)
rem 5 Netzwerk zuruecksetzen (winsock + TCP/IP, Neustart noetig)
rem 6 Temporaere Dateien loeschen (Benutzer und Windows, aelter als 1 Tag)
rem 7 Windows-Update-Zwischenspeicher leeren (hilft bei haengenden Updates)
rem 8 Komplett: erst 2, dann 1
rem Benoetigt Administratorrechte (werden beim Start angefordert).
rem Ein Protokoll liegt danach unter %%TEMP%%\FIT-Wartung.log
rem ==========================================================================
setlocal EnableExtensions
for /f "tokens=2 delims=:." %%c in ('chcp') do set "FIT_CP=%%c"
chcp 65001 >nul
title Windows-Wartungsmenü - Friederich-IT
set "LOG=%TEMP%\FIT-Wartung.log"
net session >nul 2>&1
if not errorlevel 1 goto :menu
echo.
echo Administratorrechte werden angefordert ...
set "FIT_SELF=%~f0"
powershell -NoProfile -Command "try { Start-Process -FilePath $env:FIT_SELF -Verb RunAs -ErrorAction Stop } catch { exit 1 }"
if errorlevel 1 (
echo Abgebrochen: Ohne Administratorrechte geht es nicht.
pause
)
goto :ende
:menu
cls
echo.
echo Windows-Wartungsmenü
echo ====================
echo.
echo [1] Systemdateien prüfen und reparieren sfc /scannow, ca. 10 Min.
echo [2] Windows-Abbild reparieren DISM, ca. 15 Min., braucht Internet
echo [3] Laufwerk C: auf Fehler prüfen ohne Neustart
echo [4] DNS-Zwischenspeicher leeren
echo [5] Netzwerk zurücksetzen danach Neustart nötig
echo [6] Temporäre Dateien löschen
echo [7] Windows-Update-Zwischenspeicher leeren
echo [8] Komplett-Reparatur: erst 2, dann 1
echo [0] Beenden
echo.
choice /c 123456780 /n /m " Auswahl: "
set "WAHL=%errorlevel%"
if "%WAHL%"=="9" goto :ende
if "%WAHL%"=="1" call :sfc
if "%WAHL%"=="2" call :dism
if "%WAHL%"=="3" call :chkdsk
if "%WAHL%"=="4" call :dns
if "%WAHL%"=="5" call :netz
if "%WAHL%"=="6" call :temp
if "%WAHL%"=="7" call :wu
if "%WAHL%"=="8" (
call :dism
call :sfc
)
echo.
echo Protokoll: %LOG%
pause
goto :menu
:sfc
echo.
echo Systemdateien werden geprüft. Das dauert eine Weile ...
echo [%date% %time%] sfc /scannow>>"%LOG%"
sfc /scannow
echo Ergebnis-Code: %errorlevel%>>"%LOG%"
exit /b 0
:dism
echo.
echo Windows-Abbild wird geprüft und repariert. Das dauert eine Weile ...
echo [%date% %time%] DISM RestoreHealth>>"%LOG%"
DISM /Online /Cleanup-Image /RestoreHealth
echo Ergebnis-Code: %errorlevel%>>"%LOG%"
exit /b 0
:chkdsk
echo.
echo [%date% %time%] chkdsk C: /scan>>"%LOG%"
chkdsk C: /scan
echo Ergebnis-Code: %errorlevel%>>"%LOG%"
exit /b 0
:dns
echo.
ipconfig /flushdns
echo [%date% %time%] DNS-Cache geleert>>"%LOG%"
exit /b 0
:netz
echo.
echo Setzt Winsock und TCP/IP-Einstellungen zurück. Feste IP-Adressen und
echo VPN-Einstellungen müssen danach eventuell neu eingetragen werden.
choice /c jn /n /m " Wirklich zurücksetzen? (j/n) "
if errorlevel 2 exit /b 0
netsh winsock reset
netsh int ip reset
echo [%date% %time%] Netzwerk zurückgesetzt>>"%LOG%"
echo.
choice /c jn /n /m " Jetzt neu starten? (j/n) "
if errorlevel 2 exit /b 0
shutdown /r /t 10 /c "Neustart nach Netzwerk-Reset (Friederich-IT Wartungsmenü)"
exit /b 0
:temp
echo.
echo Lösche temporäre Dateien, die älter als 1 Tag sind. Dateien, die gerade
echo benutzt werden, bleiben stehen ...
echo [%date% %time%] Temp aufraeumen>>"%LOG%"
powershell -NoProfile -Command "$g=0; foreach ($o in @($env:TEMP, (Join-Path $env:SystemRoot 'Temp'))) { Get-ChildItem -LiteralPath $o -Force -Recurse -ErrorAction SilentlyContinue | Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-1) -and $_.FullName -notlike '*FIT-Wartung.log' } | Sort-Object { $_.FullName.Length } -Descending | ForEach-Object { try { $l = if ($_.PSIsContainer) { 0 } else { $_.Length }; Remove-Item -LiteralPath $_.FullName -Force -Recurse -ErrorAction Stop; $g += $l } catch {} } }; Write-Host (' Freigegeben: {0:N0} MB' -f ($g/1MB))"
exit /b 0
:wu
echo.
echo Dienste Windows Update und BITS werden kurz angehalten ...
echo [%date% %time%] Update-Cache leeren>>"%LOG%"
net stop wuauserv >nul 2>&1
net stop bits >nul 2>&1
if exist "%SystemRoot%\SoftwareDistribution\Download" (
rd /s /q "%SystemRoot%\SoftwareDistribution\Download" >nul 2>&1
md "%SystemRoot%\SoftwareDistribution\Download" >nul 2>&1
)
net start bits >nul 2>&1
net start wuauserv >nul 2>&1
echo Erledigt. Updates werden beim nächsten Suchen neu heruntergeladen.
exit /b 0
:ende
if defined FIT_CP chcp %FIT_CP% >nul
endlocal
exit /b 0