For-Schleife in CMD - Effiziente Batch-Automatisierung meistern

Schema einer `for`-Schleife: Schlüsselwort, Initialisierung, Bedingung, Aktualisierung des Schleifenzählers. Codebeispiel: `for (int i = 0; i < 10; i = i + 1)`.

Geschrieben von

Enno Wendt

Veröffentlicht am

19. Mai 2026

Inhaltsverzeichnis

Eine saubere For-Schleife in cmd spart bei wiederkehrenden Aufgaben überraschend viel Zeit. Ob Dateioperationen, rekursive Ordnerdurchläufe oder das Auswerten von Kommandoausgaben: Wer die Syntax versteht, kann Batch-Jobs deutlich stabiler und lesbarer bauen. Ich gehe die Grundform, die wichtigsten Varianten, typische Beispiele und die Stolperfallen durch, damit Sie den Befehl im Alltag wirklich einsetzen können.

Die For-Schleife in CMD ist klein, aber für einfache Automatisierung erstaunlich stark

  • for arbeitet in der Eingabeaufforderung auf Dateien, Verzeichnissen, Texten oder Zahlenbereichen.
  • Direkt im Terminal nutzen Sie %f, in Batch-Dateien %%f.
  • Die Varianten /l, /r, /f und /d decken Schleifen, Rekursion und Parsing ab.
  • Wenn sich Variablen innerhalb der Schleife ändern, ist verzögerte Expansion oft Pflicht.
  • Für komplexes Parsing ist PowerShell meist robuster als cmd.

So funktioniert die Schleife in der Eingabeaufforderung

Die Grundidee ist simpel: for nimmt eine Menge von Werten und führt für jeden Wert denselben Befehl aus. Microsoft dokumentiert das als Befehl, der für jedes Element innerhalb einer Menge einen angegebenen Kommandoaufruf ausführt. Genau deshalb ist er so nützlich für Routineaufgaben, bei denen Sie nicht jeden Dateinamen einzeln anfassen wollen.

Die Standardform sieht so aus:

for %f in (*.txt) do type %f

Direkt an der Eingabeaufforderung verwenden Sie einen einzelnen Prozentwert, in einer Batch-Datei dagegen doppelte Prozentzeichen:

for %%f in (*.txt) do type %%f

Das ist der erste Stolperstein überhaupt: Wer im Skript versehentlich nur %f schreibt, bekommt kein sauberes Loop-Verhalten, sondern meist eine Fehlermeldung oder ignorierte Variablen.

Wichtig sind außerdem drei Details, die in der Praxis gern übersehen werden:

  • in und do sind Pflichtbestandteile.
  • Die Schleifenvariable ist buchstabenbasiert und case-sensitiv.
  • Wie Microsoft angibt, können in einer komplexen Batch-Datei bis zu 52 Variablennamen gleichzeitig aktiv sein.

Für einfache Skripte reicht meist ein einzelnes Zeichen wie %%f. Sobald die Logik wächst, wird der Code lesbarer, wenn Sie bewusst unterschiedliche Variablen für unterschiedliche Ebenen verwenden. Von hier ist es nur ein kleiner Schritt zu den Varianten, die in der Praxis wirklich zählen.

Die Varianten, die ich in der Praxis wirklich nutze

Die normale Form ist nur der Anfang. Interessant wird for erst dann, wenn Sie Verzeichnisse, Zahlenbereiche oder Textausgaben gezielt durchlaufen. Laut Microsoft sind die zusätzlichen Formen über Command Extensions verfügbar, die auf aktuellen Windows-Systemen standardmäßig aktiv sind.

Variante Wofür sie gut ist Stärke Grenze
for Dateien oder Wildcards im aktuellen Kontext Einfach, direkt, schnell lesbar Kein rekursiver Lauf, kein Zahlenbereich
for /d Nur Verzeichnisse Sauber, wenn Sie Ordner statt Dateien brauchen Wirkt nur mit passenden Mustern
for /r Rekursive Durchläufe durch Verzeichnisbäume Ideal für tiefere Ordnerstrukturen Kann bei großen Bäumen langsam werden
for /l Zahlenbereiche Praktisch für Zähler, Tests und Batch-Logik Nur numerische Schleifen
for /f Textdateien, Kommandoausgaben und Strings parsen Sehr flexibel Am anfälligsten für Formatprobleme

Ich sehe den größten praktischen Unterschied zwischen for und for /f immer wieder in Projekten: Die normale Form arbeitet mit Dateimengen, die /f-Variante zerlegt Text in Zeilen und Tokens. Das klingt nach einem kleinen Unterschied, ist aber in der Umsetzung entscheidend. Wer das verwechselt, baut schnell fragiles Skriptverhalten.

Ein kleiner Merksatz hilft: /l zählt, /r läuft durch Ordner, /f liest Text, /d filtert Verzeichnisse. Damit ist der grobe Werkzeugkasten bereits klar. Im nächsten Schritt wird interessant, wie Sie diese Varianten konkret einsetzen.

Praktische Beispiele für Dateien, Zahlen und Verzeichnisse

Wenn ich eine Schleife in cmd erkläre, starte ich gern mit Beispielen, die sofort nützlich sind. Sie zeigen nicht nur die Syntax, sondern auch, welche Art Problem der jeweilige Loop tatsächlich löst.

Dateien im aktuellen Ordner verarbeiten

Alle Textdateien im aktuellen Verzeichnis ausgeben:

for %f in (*.txt) do type %f

In einer Batch-Datei wird daraus:

for %%f in (*.txt) do type %%f

Das ist banal, aber genau solche Aufgaben sind der eigentliche Sweet Spot von cmd: einfache, klare Wiederholungen ohne zusätzlichen Overhead.

Zahlenbereiche sauber durchlaufen

Wenn Sie einen Zähler oder Testlauf brauchen, ist /l die sauberste Form:

for /l %i in (1,1,5) do @echo Schritt %i

Das erzeugt die Folge 1 bis 5. Der mittlere Wert ist die Schrittweite. Negative Schritte sind ebenfalls möglich, etwa so:

for /l %i in (5,-1,1) do @echo Schritt %i

Für kleine Batch-Checks oder einfache Wiederholungen ist das sehr effizient. Für echte Logik mit Bedingungen und mehreren Datentypen würde ich heute aber meist nicht mehr bei cmd bleiben.

Ordner rekursiv auswerten

Wenn Sie eine komplette Baumstruktur prüfen wollen, ist for /r der richtige Ansatz:

for /r "C:\Logs" %f in (*.log) do @echo %~fF

Mit dem Modifikator %~fF holen Sie sich den vollständigen Pfad des aktuellen Treffers. Das ist nützlich, wenn Sie mit Unterordnern arbeiten und nicht nur den Dateinamen brauchen. Genau hier spielt cmd seine Stärke aus: kurze, direkte Befehle für administrative Routinen.

Text und Kommandoausgaben mit for /f zerlegen

Die flexibelste Form ist for /f. Sie eignet sich für Dateien, Textzeilen und die Ausgabe anderer Befehle. Ein typisches Beispiel ist das Parsen einer Datei mit Trennzeichen:

for /f "tokens=1,2 delims=;" %a in (daten.csv) do @echo %a - %b

Hier trennt delims=; an Semikolons und tokens=1,2 greift die ersten zwei Spalten ab. Mit usebackq können Sie außerdem Dateinamen mit Leerzeichen und Kommandoausgaben in Backticks sauberer behandeln. Das ist praktisch, aber auch der Punkt, an dem Fehler schnell subtil werden.

Eine Faustregel aus der Praxis: Je weniger sich das Eingabeformat ändert, desto eher lohnt sich for /f. Sobald die Ausgabe menschenlesbar, lokalisiert oder unregelmäßig ist, wird das Parsing fragiler. Dann ist die nächste Sektion besonders wichtig.

Die häufigsten Fehler und wie ich sie vermeide

Die meisten Probleme mit einer For-Schleife in cmd haben nichts mit der Schleife selbst zu tun, sondern mit Umgebung, Zitierung und Variablenexpansion. Genau dort lohnt sich sauberes Arbeiten.

  • Ein einzelnes Prozentzeichen in Batch-Dateien ist falsch. Verwenden Sie dort %%.
  • Pfade mit Leerzeichen müssen in Anführungszeichen stehen, sonst zerlegt cmd den Pfad in mehrere Teile.
  • Veränderte Variablen innerhalb der Schleife brauchen oft verzögerte Expansion.
  • for /f auf hübsch formatierte Ausgabe ist anfällig, wenn sich die Ausgabe ändert oder lokalisiert ist.
  • Ohne usebackq werden Anführungszeichen und Backticks nicht so interpretiert, wie viele es erwarten.

Ein Klassiker ist die Zählervariable in einer Schleife. Ohne verzögerte Expansion sehen Sie nicht den aktuellen Wert, sondern oft nur den Startwert. So ist es korrekt:

@echo off
setlocal EnableDelayedExpansion
set count=0

for %%f in (*.txt) do (
  set /a count+=1
  echo !count!: %%f
)

endlocal

Der entscheidende Unterschied ist !count! statt %count%. Mit setlocal EnableDelayedExpansion wird der Variablenwert erst zur Laufzeit ausgewertet. Das ist kein exotischer Spezialfall, sondern ein Standardwerkzeug für saubere Batch-Dateien. Microsoft dokumentiert das Verhalten bei setlocal ausdrücklich, und genau daran orientiere ich mich in Skripten.

Ein weiterer Punkt, der oft unterschätzt wird: Wenn Sie mit for /f arbeiten, sollten Sie nicht nur an die Syntax denken, sondern an die Datenqualität. Kommt die Ausgabe aus einem anderen Tool, einer anderen Sprache oder einer anderen Windows-Version, kann sich das Format ändern. Dann wird aus einem kleinen Hilfs-Skript schnell ein Wartungsproblem.

Wann CMD genügt und wann PowerShell die bessere Wahl ist

Ich nutze cmd weiterhin gern für schnelle, lokale und klar begrenzte Automatisierung. Für Dateiumbenennungen, einfache Wiederholungen, Reparaturskripte oder Verwaltungsaufgaben ist die For-Schleife vollkommen ausreichend. Wenn der Job klein bleibt, ist cmd oft sogar die bessere Wahl, weil der Einstieg direkter ist.

Sobald aber mehrere Bedingungen, strukturierte Daten oder komplexes Parsing ins Spiel kommen, kippt das Bild. Dann wird PowerShell meist die vernünftigere Lösung, weil sie mit Objekten statt mit reinem Text arbeitet. Das ist in der Praxis weniger fehleranfällig, vor allem bei CSV, JSON, Registry-Abfragen oder größeren Verwaltungsprozessen.

Aufgabe cmd mit for PowerShell
Einfache Dateioperationen Sehr gut geeignet Oft möglich, aber nicht zwingend nötig
Zahlen- und Zählerlogik Gut für einfache Fälle Stabiler bei komplexerer Logik
Textausgabe eines Befehls parsen Machbar, aber fragil Deutlich robuster
Große Skripte mit Fehlerbehandlung Eher unkomfortabel Meist die bessere Wahl

Meine klare Linie ist deshalb: CMD für einfache, klare, kurzfristige Aufgaben. PowerShell für alles, was wachsen oder wartbar bleiben soll. Das ist keine Ideologie, sondern eine Frage von Fehleranfälligkeit, Lesbarkeit und späterem Aufwand. Wer diese Grenze früh zieht, spart sich viel Debugging.

Woran ich ein sauberes Batch-Skript erkenne

Ein gutes Skript mit for ist nicht das längste, sondern dasjenige, das sich in drei Monaten noch nachvollziehen lässt. Ich achte dabei auf wenige, aber harte Kriterien: klare Variablennamen, korrekt gequotete Pfade, gezielte Nutzung von setlocal und keine überflüssige Parsing-Akrobatik.

Wenn Sie sich nur drei Regeln merken, dann diese: Erstens, im Batch immer %% verwenden. Zweitens, bei variablen Werten innerhalb der Schleife auf verzögerte Expansion umstellen. Drittens, for /f nur dort einsetzen, wo das Eingabeformat wirklich stabil ist. Alles andere führt früher oder später zu einem Skript, das nur unter Idealbedingungen läuft.

Genau darin liegt der praktische Wert der For-Schleife in cmd: Sie ist klein, direkt und nützlich, solange das Problem klein und direkt bleibt. Für Routineaufgaben ist sie immer noch ein gutes Werkzeug. Für komplexere Automatisierung ziehe ich heute aber die Grenze bewusst früher und wechsle auf PowerShell, bevor die Batch-Datei unübersichtlich wird.

Häufig gestellte Fragen

In der Befehlszeile (direkt im Terminal) verwenden Sie %f. In Batch-Dateien (.bat-Skripte) müssen Sie %%f nutzen. Dies ist ein häufiger Stolperstein; die Missachtung führt oft zu Fehlern oder unerwartetem Verhalten.

Verzögerte Expansion ist notwendig, wenn sich Variablen innerhalb der Schleife ändern und Sie den aktuellen Wert in jedem Durchlauf abrufen möchten (z.B. bei Zählern). Aktivieren Sie sie mit setlocal EnableDelayedExpansion und greifen Sie mit !variable! zu.

Die Variante for /f ist ideal zum Parsen von Textdateien, Kommandoausgaben oder Strings. Sie ermöglicht das Zerlegen von Zeilen in Tokens basierend auf Trennzeichen und ist sehr flexibel, aber auch anfälliger für Formatänderungen.

PowerShell ist die bessere Wahl für komplexe Aufgaben, strukturierte Daten (CSV, JSON), umfangreiche Fehlerbehandlung oder wenn das Skript wachsen und wartbar bleiben soll. CMD eignet sich besser für schnelle, einfache und klar begrenzte Automatisierungen.

Artikel bewerten

Bewertung: 0.00 Stimmenanzahl: 0

Tags:

cmd for schleife cmd for-schleife beispiele for-schleife cmd verzögerte expansion cmd for-schleife rekursiv for-schleife cmd text parsen cmd batch-skript for-schleife

Beitrag teilen

Enno Wendt

Enno Wendt

Mein Name ist Enno Wendt und ich arbeite seit 7 Jahren im Bereich IT-Infrastruktur, Web-Technologien und Sicherheit. Mein Interesse an diesen Themen begann früh, als ich die Möglichkeiten erkannte, die Technologie bietet, um Probleme zu lösen und Prozesse zu optimieren. Ich finde es spannend, komplexe technische Zusammenhänge verständlich zu erklären und dabei aktuelle Trends und Entwicklungen im Blick zu behalten. In meinen Beiträgen konzentriere ich mich darauf, nützliche und präzise Informationen bereitzustellen, die sowohl für Fachleute als auch für Einsteiger zugänglich sind. Ich lege großen Wert darauf, meine Quellen sorgfältig zu überprüfen und Informationen zu vergleichen, um sicherzustellen, dass ich meinen Lesern eine klare und fundierte Sichtweise präsentiere. Mein Ziel ist es, Wissen so zu organisieren, dass es leicht verständlich ist und dabei hilft, die Herausforderungen der digitalen Welt zu meistern.

Kommentar schreiben