- 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
Ein- und Ausgabe, Pipes und Umleitungen
Grundidee: Kommunikation zwischen Befehlen
Jeder Befehl in der CMD kann mit seiner Umgebung kommunizieren – und zwar über sogenannte Datenströme (Streams).
Standardausgabe (stdout): Das, was der Befehl „normal“ ausgibt.
Fehlerausgabe (stderr): Fehlermeldungen oder Warnungen.
Standardeingabe (stdin): Eingaben, die ein Befehl vom Benutzer oder von einem anderen Programm erhält.
Diese drei Ströme kann man umleiten, also in eine Datei schreiben, an ein anderes Programm weitergeben oder miteinander verknüpfen.
Damit wird CMD erst wirklich mächtig.
Umleitungen: Ausgaben in Dateien schreiben
Mit dem größer-als-Zeichen > leitest du die Ausgabe eines Befehls in eine Datei um, statt sie auf dem Bildschirm anzuzeigen.
dir > inhalt.txt
Das schreibt das Ergebnis von dir in die Datei inhalt.txt.
Wenn die Datei bereits existiert, wird sie überschrieben.
Wenn du die Ausgabe anhängen willst, statt sie zu überschreiben, verwende >>:
dir >> inhalt.txt
Jetzt wird die neue Ausgabe einfach ans Ende der Datei angehängt.
Das ist nützlich, um Protokolle (Logs) oder Berichte über mehrere Befehle hinweg zu sammeln.
Fehlerausgaben trennen oder kombinieren
Fehlermeldungen werden über einen eigenen Datenstrom ausgegeben (stderr, Nummer 2).
Standardausgabe ist Nummer 1.
Du kannst sie getrennt oder gemeinsam umleiten.
Nur die Fehlerausgabe:
dir C:\Unbekannt 2>fehler.txt
Standard- und Fehlerausgabe gemeinsam:
dir C:\Windows >ausgabe.txt 2>&1
Erklärung:
2>leitet den Fehlerstrom um.2>&1bedeutet: „Schicke alle Fehler an denselben Ort wie die Standardausgabe.“
Damit landet alles, was der Befehl schreibt (egal ob normal oder Fehler), gesammelt in einer einzigen Datei.
Pipes: Ausgaben an andere Befehle weitergeben
Mit dem Pipe-Zeichen | kannst du die Ausgabe eines Befehls direkt an den nächsten Befehl weiterreichen.
Das ist wie eine Datenleitung zwischen den beiden.
Beispiel:
dir | find "Bericht"
Hier wird dir ausgeführt, aber statt alles anzuzeigen, wird die Ausgabe an find weitergegeben.find zeigt nur Zeilen an, die das Wort Bericht enthalten.
Das funktioniert auch mit mehreren Pipes hintereinander:
dir /s | find "txt" | find "Protokoll"
Das sucht rekursiv (/s) nach Dateien, die „txt“ im Namen haben und zusätzlich „Protokoll“ enthalten.
Typische Kombinationen
| Zweck | Befehl | Beschreibung |
|---|---|---|
| Ergebnis speichern | ipconfig > netz.txt | schreibt die Ausgabe in eine Datei |
| Fehler protokollieren | copy test.txt d:\ 2>fehler.log | schreibt nur Fehler in Logdatei |
| Suche in Ausgaben | `dir /s | find „log“` |
| Alles (Ergebnis + Fehler) speichern | tasklist > prozesse.txt 2>&1 | kombiniert beide Ausgaben |
| In Zwischenablage kopieren | `dir | clip` |
Der Befehl clip ist besonders praktisch, um Ausgaben in Textdateien oder E-Mails einzufügen, ohne sie manuell zu markieren.
Beispiele aus der Praxis
Beispiel 1: Fehler in ein Log schreiben
@echo off
echo Starte Kopiervorgang...
copy C:\Unbekannt\*.txt D:\Backup\ 2>kopie_fehler.log
echo Fertig.
Wenn der Quellordner nicht existiert, landet die Fehlermeldung in kopie_fehler.log, während die CMD-Ausgabe sauber bleibt.
Beispiel 2: Dateien nach Stichwort durchsuchen
type system.log | find /i "error" > fehler.txt
Das durchsucht die Datei system.log nach Zeilen mit dem Wort „error“ (unabhängig von Groß-/Kleinschreibung) und schreibt sie in fehler.txt.
Beispiel 3: Protokoll mit Zeitstempel
@echo off
echo ======= %DATE% %TIME% ======= >> systemcheck.log
systeminfo | find "OS" >> systemcheck.log
ipconfig | find "IPv4" >> systemcheck.log
echo -------------------------------- >> systemcheck.log
So baust du ein laufendes Protokoll auf, das bei jedem Aufruf neue Informationen anhängt.
Eingaben umleiten
Neben der Ausgabe kann man auch Eingaben umleiten.
Das ist seltener nötig, aber für Skripte mit vordefinierten Antworten nützlich.
Beispiel:
sort < unsortiert.txt > sortiert.txt
Hier wird die Datei unsortiert.txt als Eingabe verwendet (<), sortiert und das Ergebnis in sortiert.txt geschrieben.
Warum Pipes so wichtig sind
Pipes ermöglichen dir, kleine Befehle zu kombinieren, anstatt große komplexe Tools zu schreiben.
Du kannst dir das vorstellen wie Bausteine, die du beliebig zusammensetzt.
Jeder Befehl macht eine Sache gut – zusammen ergeben sie mächtige Abläufe.
Beispiel:
tasklist | find "chrome" | clip
Damit bekommst du alle laufenden Chrome-Prozesse und kopierst sie direkt in die Zwischenablage – ohne Zwischenstopp.
Häufige Fehlerquellen
Anführungszeichen vergessen bei Pfaden mit Leerzeichen
Reihenfolge bei
2>&1vertauscht (>&2macht etwas anderes)>statt>>– unbeabsichtigtes Überschreiben von DateienPipe mit Befehlen verwendet, die keine Ausgabe erzeugen
setxoderechoin Kombination mit>→ unbeabsichtigte Variablenersetzung
