- 1 Abschnitt
- 15 Lektionen
- Um den Kurs in deinem Profil zu hinterlegen klicke oben auf Starten
- Kommandozeile (CMD)16
- 1.1Einstieg & Arbeitsweise
- 1.2Navigieren im Dateisystem
- 1.3Pfade, Wildcards und Quoting
- 1.4Umgebungsvariablen und der PATH
- 1.5Ein- und Ausgabe, Pipes und Umleitungen
- 1.6Suchen, Vergleichen und Archivieren
- 1.7Prozesse, Dienste und Systeminformationen
- 1.8Netzwerk-Basics und Troubleshooting
- 1.9Rechte, ACLs und Dateiattribute
- 1.10Batch-Grundlagen und Automatisierung
- 1.11Aufgaben planen und Startparameter
- 1.12Fehlerbehandlung, Logs und Debugging
- 1.13Erweiterte Batch-Techniken – FOR /F, String-Operationen und Menüführung
- 1.14Aufgaben
- 1.15Lösungen
- 1.16Kommandozeile (CMD)14 Fragen
Erweiterte Batch-Techniken – FOR /F, String-Operationen und Menüführung
Ab hier geht es darum, flexible und intelligente Batch-Dateien zu schreiben.
Du kannst mit ihnen:
Dateien und Textzeilen einlesen,
Daten filtern oder extrahieren,
Zeichenketten bearbeiten,
und sogar einfache Menüsysteme bauen.
Diese Fähigkeiten sind in der Praxis Gold wert – z. B. für Log-Analysen, User-Interaktionen oder Systemprüfungen.
FOR /F – Text und Dateien zeilenweise einlesen
Die Variante /F des for-Befehls liest Dateien, Befehlsausgaben oder Strings zeilenweise aus.
Das ist extrem mächtig, um Daten zu verarbeiten oder Befehlsausgaben zu analysieren.
Grundsyntax:
for /f "Optionen" %%Variable in (Datei oder Befehl) do (Befehl)
Beispiel 1: Datei Zeile für Zeile lesen
@echo off
for /f %%Z in (namen.txt) do echo Gefundener Name: %%Z
Wenn namen.txt z. B. enthält:
Frederik
Jonas
Anna
Ausgabe:
Gefundener Name: Frederik
Gefundener Name: Jonas
Gefundener Name: Anna
Erklärung:
/fteilt jede Zeile an Leerzeichen und speichert das erste Wort in%%Z.Mit Optionen kannst du Leerzeichen oder Trennzeichen anpassen.
Beispiel mit vollständiger Zeile:
for /f "usebackq delims=" %%Z in ("namen.txt") do echo %%Z
usebackqerlaubt Dateinamen in Anführungszeichendelims=entfernt Trennzeichen (liest komplette Zeile)
Beispiel 2: Ausgabe eines Befehls verarbeiten
for /f %%A in ('dir /b *.txt') do echo Datei gefunden: %%A
Das liest die Ausgabe von dir /b (nur Dateinamen) und gibt jeden Namen einzeln aus.
Das ist die Grundlage für dynamische Dateiverarbeitung.
Praktisches Beispiel – Größe von Dateien ausgeben:
for /f "tokens=5" %%A in ('dir /-c ^| find ".txt"') do echo %%A Bytes
(^| dient dazu, die Pipe in der FOR-Schleife korrekt zu escapen.)
Beispiel 3: Werte aus einem Textfile extrahieren
Angenommen, du hast eine Datei daten.csv:
Benutzer;Abteilung;E-Mail
Frederik;IT;f@firma.de
Jonas;Vertrieb;j@firma.de
Dann:
for /f "skip=1 tokens=1,2,3 delims=;" %%A in (daten.csv) do (
echo Benutzer: %%A - Abteilung: %%B - Mail: %%C
)
Optionen erklärt:
skip=1→ überspringt die Kopfzeiletokens=1,2,3→ wählt Spaltendelims=;→ Semikolon als Trenner
Das ist ideal für kleine Auswertungen aus CSV-Dateien – ganz ohne Excel.
String-Operationen (Zeichenketten bearbeiten)
Batch bietet einfache, aber effektive Möglichkeiten, Strings zu verarbeiten.
Länge, Teilstrings und Ersetzungen
set TEXT=Hallo Welt
echo %TEXT:~0,5% :: Ausgabe: Hallo
echo %TEXT:~6% :: Ausgabe: Welt
:~Start,Längeschneidet Teile heraus.Ohne Länge nimmt es den Rest.
Ersetzen von Zeichen oder Wörtern:
set DATEI=bericht_alt.txt
echo %DATEI:_alt=_neu%
→ bericht_neu.txt
Entfernen von Leerzeichen:
set VAR= Text mit Leerzeichen
set VAR=%VAR: =%
echo %VAR%
Dynamische Variablen mit verzögerter Auswertung
In Schleifen ändern sich Variablen oft innerhalb der Ausführung – dafür brauchst du die delayed expansion.
@echo off
setlocal enabledelayedexpansion
set Z=0
for %%A in (1 2 3 4 5) do (
set /a Z=!Z!+1
echo Aktueller Wert: !Z!
)
endlocal
Ohne ! würde %Z% immer den alten Wert anzeigen.
Mit enabledelayedexpansion aktualisiert CMD die Variable live in der Schleife.
Menüsysteme in Batch-Dateien
Mit ein bisschen Logik kannst du einfache Menüs bauen – ideal für Prüfungsaufgaben oder Tools, bei denen der Benutzer wählen soll, was passieren soll.
@echo off
:menu
cls
echo ==============================
echo SYSTEM-TOOL - HAUPTMENÜ
echo ==============================
echo [1] IP-Konfiguration anzeigen
echo [2] Laufende Prozesse anzeigen
echo [3] Beenden
echo ==============================
set /p WAHL=Bitte Option eingeben:
if "%WAHL%"=="1" goto ipconfig
if "%WAHL%"=="2" goto prozesse
if "%WAHL%"=="3" goto ende
goto menu
:ipconfig
cls
ipconfig /all
pause
goto menu
:prozesse
cls
tasklist
pause
goto menu
:ende
echo Programm beendet.
exit
So lernst du die Steuerlogik hinter goto, if und set /p richtig zu kombinieren.
Solche Menüs sind beliebt in Prüfungsaufgaben („Admin-Tool“, „Backup-Menü“, „Netzwerkdiagnose-Tool“).
Häufige Fehlerquellen
| Problem | Ursache | Lösung |
|---|---|---|
FOR /F liest keine Zeilen | Datei nicht gefunden oder kein usebackq | ("pfad\datei.txt") verwenden |
| Variablenwert in Schleife bleibt gleich | keine delayed expansion | setlocal enabledelayedexpansion + !VAR! |
| Trennzeichen falsch erkannt | Standardtrenner Leerzeichen | delims=; oder delims= setzen |
| Menü springt immer zurück | falsche Label-Namen | Labels exakt wie in GOTO verwenden |
^ oder ` | ` falsch interpretiert | Sonderzeichen in Schleife nicht escaped |
