Zurück zu Windows
Batchdatei-Programmierung
Variablen, Schleifen, Bedingungen und Unterprogramme — automatisieren mit .bat-Dateien.
Grundaufbau einer Batchdatei
@echo off
:: Kommentar: Dies ist ein Batch-Skript
echo Hallo, %USERNAME%!
pause
Speichern als .bat-Datei, Doppelklick oder Rechtsklick → "Als Administrator ausführen".
Variablen und Parameter
@echo off
:: Variable setzen
SET name=Server01
echo Computername: %name%
:: Benutzereingabe
SET /P eingabe=Wie heisst du?
echo Hallo, %eingabe%!
:: Parameter (%1, %2, ...)
:: Aufruf: skript.bat Wert1 Wert2
echo Parameter 1: %~1
echo Parameter 2: %~2
Bedingungen (IF / ELSE)
@echo off
:: Datei pruefen
IF EXIST "C:\Backup\log.txt" (
echo Log-Datei gefunden.
) ELSE (
echo Log-Datei fehlt!
)
:: Fehlercode pruefen
ping -n 1 192.168.1.1 >nul
IF %ERRORLEVEL% EQU 0 (
echo Server erreichbar.
) ELSE (
echo Server NICHT erreichbar!
)
:: Zeichenketten vergleichen
IF /I "%1"=="backup" echo Backup wird gestartet...
FOR-Schleifen
@echo off
:: Alle .log-Dateien auflisten
FOR %%f IN (C:\Logs\*.log) DO echo %%f
:: Verzeichnisse durchlaufen
FOR /D %%d IN (C:\Users\*) DO echo Benutzer: %%d
:: Zahlen von 1 bis 10
FOR /L %%i IN (1,1,10) DO echo Nummer %%i
:: Dateiinhalt zeilenweise lesen
FOR /F "tokens=*" %%z IN (C:\config.txt) DO echo %%z
CALL, GOTO und Labels
@echo off
echo Starte Skript...
CALL :backup
CALL :cleanup
echo Fertig!
GOTO :eof
:backup
echo [1/2] Backup laeuft...
xcopy C:\Daten D:\Backup /s /e /y >nul
GOTO :eof
:cleanup
echo [2/2] Temp-Dateien loeschen...
del /q C:\Temp\*.tmp 2>nul
GOTO :eof
Praxis: Netzwerk-Check als Batch
@echo off
echo === Netzwerk-Diagnose ===
echo %date% %time%
echo.
echo [1] Lokale IP:
ipconfig | findstr /i "IPv4"
echo.
echo [2] Gateway-Ping:
ping -n 2 192.168.1.1 | findstr /i "Antwort Zeitueber"
echo.
echo [3] Internet-Ping:
ping -n 2 8.8.8.8 | findstr /i "Antwort Zeitueber"
echo.
echo [4] DNS-Test:
nslookup google.de 2>nul | findstr /i "Name Addr"
echo.
echo === Diagnose abgeschlossen ===
pause
Tipp: In Schleifen in Batchdateien wird %% verwendet, in der Kommandozeile direkt nur %. @echo off blendet die Befehlszeilen aus, 2>nul unterdrueckt Fehlermeldungen.