Kommandozeile

Die besten Profi-Befehle für Windows

13.01.2024
Von Thorsten Eggeling
Die Kommandozeile bietet unter Windows einen wahren Schatz an nützlichen Befehlen und Tools. Wir liefern Beispiele für die Powershell, blicken aber auch auf Eingabeaufforderung und Bash-Shell.

Tools und Anwendungen lassen sich in der grafischen Oberfläche meist intuitiv nutzen. Schaltfläche und Menüs zeigen, wohin man klicken muss, um eine bestimmte Funktion aufzurufen. Je nach Programm können grafische Oberflächen aber auch sehr unübersichtlich werden, etwa wenn man sich für eine bestimmte Aufgabe immer wieder durch tief verschachtelte Menüs hangeln muss.

Die Kommandozeile versprüht dagegen einen vergleichsweise spröden Charme. Der blinkende Cursor verlangt nach Eingaben, die man sich aber erst zusammensuchen muss. Dabei sind die Befehle und Optionen durchaus verständlich, wenn man die englischsprachigen Abkürzungen ein paar Mal gelesen, aufgelöst und eingetippt hat.

Windows bietet mehrere Interpreter für Kommandozeilen. Zu Beginn des Artikels zeigen wir, was Sie installieren können, um dann kurze Beispiele für die Powershell vorzustellen. Zum Vergleich behandeln wir auch teilweise die Besonderheiten von Eingabeaufforderung und Bash-Shell.

Hinweis: In der Powershell und der Eingabeaufforderung spielen Groß- und Kleinschreibung keine Rolle, in der Bash-Shell wird unterschieden.

Das Terminal unter Windows: Einer für alles

Jede Shell griffbereit: Im Windows-Terminal lassen sich Powershell, Eingabeaufforderung und Bash-Shell (WSL2) nebeneinander in Registerkarten starten.
Jede Shell griffbereit: Im Windows-Terminal lassen sich Powershell, Eingabeaufforderung und Bash-Shell (WSL2) nebeneinander in Registerkarten starten.

Die klassische Kommandozeile unter Windows ist die Eingabeaufforderung oder, genauer, seit Windows NT der Befehlsinterpreter Cmd.exe. Der designierte Nachfolger war die Windows-Powershell, die in der Version 5.1 bei Windows 10 und 11 vorinstalliert ist. Aktuell ist die plattformübergreifende und quelloffene Version Powershell 7, die es auch für Mac-OS und Linux gibt. Dazu kommt das Windows Subsystem für Linux in Windows 10 und 11, das mit der Bash-Shell eine eigene Kommandozeile bietet.

Alles Genannte lässt sich im Windows-Terminal nutzen, bei Bedarf nebeneinander in mehreren Registerkarten. Bei Windows 11 ist Windows-Terminal bereits mit dabei. Nutzer von Windows 10 richten es aus dem Microsoft Store über eine Suche nach Terminal ein. Installieren Sie auch das Tool Winget, das Sie über den Suchbegriff App-Installer finden. Es ermöglicht die schnelle Installation von Tools und Anwendungen über die Kommandozeile. Winget gehört bei Windows 11 bereits zum Lieferumfang.

Starten Sie das Windows-Terminal über eine Suche im Startmenü. Oder Sie drücken die Tastenkombination Win-R, tippen wt ein und bestätigen mit "OK". Im Windows-Terminal startet standardmäßig die Windows Powershell. Die Eingabeaufforderung und weitere Shells lassen sich über das Menü hinter der Schaltfläche mit dem Pfeil nach unten aktivieren. Starten Sie Windows-Terminal für Programminstallationen und Updates als Administrator. Dann müssen Sie die Rechteerhöhung nicht bei jeder Aktion bestätigen. Dazu verwenden Sie die Suche im Startmenü und den Kontextmenüpunkt "Als Administrator ausführen".

Die aktuelle Version der Powershell 7 installieren Sie in der administrativen Windows-Powershell oder Eingabeaufforderung mit

winget install --id Microsoft. Powershell

Wir beziehen uns in diesem Artikel auf diese Version. Die meisten Befehle funktionieren aber auch in der Windows Powershell 5.1.

Welche Powershell-Version Sie gerade nutzen, erfahren Sie mit dem Befehl

$PSVersionTable

Wer das Windows Subsystem für Linux (WSL) beziehungsweise die Bash-Shell installieren möchte, verwendet

wsl --install

Danach muss man Windows neu starten. Wenn es nur um die Bash-Shell geht, können Sie auch Msys2 installieren. Neben Werkzeugen für Entwickler sind darin auch viele nützliche Tools aus der Linux Welt enthalten.

Achtung: Besonderheiten bei der Shell-Nutzung

  • Im Windows-Explorer sind die Bezeichnungen einiger Elemente für die deutsche Sprache lokalisiert. Was im Dateimanager als „C:\Benutzer“ auftaucht, heißt tatsächlich „C:\Users“, die Ordner „Dokumente“ und „Bilder“ heißen „Documents“ und „Pictures“. In der Shell wird die Lokalisierung nicht berücksichtigt, und Sie müssen daher für einige Ordner die englischsprachigen Bezeichnungen verwenden.

  • Datei- und Ordnernamen, die Leerzeichen enthalten, setzt man in Anführungszeichen (doppelt oder einfach), beispielsweise: cd “C:\Program Files (x86)”

  • In der Powershell kann man die automatische Vervollständigung mit der Tab-Taste nutzen. “cd C:\Pr” gefolgt von der Tab-Taste wird zu „C:\Program Files\“ ergänzt, ein weiterer Tastendruck liefert „C:\Program Files (x86)\“. Die Ergänzung funktioniert auch bei Befehlen. Bei Get-Ch liefert die Tab-Taste sofort „Get-ChildItem“.

  • Shell-Befehle beziehen sich immer auf den aktuellen Ordner. Der direkte Start von Programmen über den Namen erfolgt in der Powershell mit einem vorangestellten „.\“, wenn das Programm im aktuellen Verzeichnis liegt. Andernfalls ist der absolute Pfad zur Exe-Datei erforderlich.

  • Umständliche Pfadangaben lassen sich vermeiden, wenn Sie Ordner mit Tools in den Suchpfad aufnehmen. Erstellen Sie beispielsweise den Ordner „C:\Tools“, und kopieren Sie alle gewünschten Zusatzwerkzeuge für die Kommandozeile hinein. Über Win-R rufen Sie SystemPropertiesAdvanced auf. Klicken Sie auf „Umgebungsvariablen“, im oberen Bereich auf „Path“ und dann auf „Bearbeiten“. Über „Neu“ nehmen Sie den Ordner „C:\Tools“ in die Pfad-Variable auf. Entsprechend verfahren Sie mit anderen Ordnern, beispielsweise „C:\msys64\usr\bin“ oder mit den Tools-Ordnern von WSCC.

Mit Verzeichnissen und Laufwerken arbeiten

Wo man sich im Dateisystem gerade befindet, zeigt in allen Shells der Prompt an. Standardmäßig ist es das Profil- beziehungsweise Home-Verzeichnis des Benutzers, das bei Powershell und Eingabeaufforderung im Prompt als "C:\Users[Benutzername]" zu sehen ist. Mit dem Befehl

cd C:\Windows

wechselt man das angegebene Verzeichnis. Bem Pfad "C:\Windows" handelt sich um einen kompletten beziehungsweise absoluten Pfad. Mit

cd C:\

wechselt man in das Hauptverzeichnis von Laufwerk "C:", und dann mit

cd C:\

in das Verzeichnis "Windows". Dabei handelt es sich um einen relativen Pfad, also relativ zu "C:\" (siehe Kasten auf Seite 22). In der Powershell kann man Laufwerk und Pfad gleichzeitig wechseln:

cd X:\Backup

In der Eingabeaufforderung verwendet man dafür den Befehl

cd /D X:\Backup

Bash-Shell: Das Windows Subsystem für Linux greift auf ein anderes Home-Verzeichnis zu. Es liegt unter einem Pfad wie "C:\ Users[Benutzername]\AppData\Local\Packages\CanonicalGroupLimited.Ubuntuon-Windows_[Code]\LocalState\rootfs\home\ [Benutzername]". In der Powershell lässt sich der komplizierte Pfad über

cd \wsl$\Ubuntu\home\ [Benutzername]

erreichen. Mit cd ohne weitere Parameter geht es wieder zurück ins Windows-Profilverzeichnis.

Abkürzungen für Befehle: In der Powershell sind für häufig genutzte Befehle entsprechende Alias definiert. Statt Get-Content beispielsweise kann man cat verwenden.
Abkürzungen für Befehle: In der Powershell sind für häufig genutzte Befehle entsprechende Alias definiert. Statt Get-Content beispielsweise kann man cat verwenden.

Alias und Cmdlets: In der Powershell kann man statt cd auch

Set-Location X:\Backup

verwenden. cd ist tatsächlich nur ein Alias für das Cmdlet Set-Location. Als Cmdlets werden die Befehle in Powershell bezeichnet. Die umfangreiche Liste mit vordefinierten Alias ist mit

Get-Alias

abrufbar.

Get-Alias | more

gibt den Text seitenweise aus; verwenden Sie die Leertaste zum Blättern und die QTaste zum Beenden. Das Pipe-Zeichen "|" leitet die Ausgabe an more weiter, das für die Paginierung sorgt. Die folgende Befehlszeile leitet die Ausgabe in eine Datei um:

Get-Alias > alias-list.txt

Öffnen Sie die Datei mit Notepad:

notepad alias-list.txt

Viele Alias dienen als Abkürzung für die eher umständlichen Cmdlets und orientieren sich an den Befehlen in der Eingabeaufforderung und Bash-Shell. Die Syntax unterscheidet sich aber oft, wenn man zusätzliche Optionen verwenden will. Der Befehl

Get-ChildItem

zeigt den Inhalt des aktuellen Verzeichnisses an. Fügt man den Pfad mit

Get-ChildItem C:\Windows

an, wird der Inhalt dieses Verzeichnisses angezeigt.

Verzeichnisse und Dateien auflisten: Get-ChildItem entspricht dir in der Eingabeaufforderung. Geben Sie einen Pfad an, um in ein bestimmtes Verzeichnis zu sehen.
Verzeichnisse und Dateien auflisten: Get-ChildItem entspricht dir in der Eingabeaufforderung. Geben Sie einen Pfad an, um in ein bestimmtes Verzeichnis zu sehen.

Alternativ verwenden man den Alias dir - wie in der Eingabeaufforderung - oder ls in der Bash-Shell (Tabelle auf Seite 21).

Remove-Item [Pfad]

löscht ein Verzeichnis oder eine Datei (Alias: del, rm, rmdir). Ohne weitere Parameter arbeitet der Befehl interaktiv, wenn der Ordner nicht leer ist. Tippen Sie A ein, um alle enthaltenen Ordner und Dateien ohne weitere Rückfragen zu löschen. Oder Sie verwenden für den gleichen Zweck

Remove-Item [Pfad] -Recurse

In der Eingabeaufforderung löscht

rmdir /S /Q [Pfad]

Verzeichnisbäume ohne Rückfrage, und in der Bash-Shell kommt

rm -r [Pfad]

zum Einsatz.

Ordner packen: Compress-Archive packt Ordner in ZIP-Archive:

Compress-Archive [Pfad] -DestinationPath E:\Backup\ Archiv.zip

Für "[Pfad]" setzen Sie den Ordner ein, den Sie packen wollen. Hinter "-Destination- Path" steht die Zieldatei mit Pfadangabe. Der Ordner muss bereits vorhanden sein.

Expand-Archive E:\Backup\Archiv.zip -DestinationPath [Pfad]

entpackt die ZIP-Datei in den mit "[Pfad]" angegebenen Ordner.

Das von Linux/WSL bekannte Tool Tar ist bei Windows 10 und 11 ebenfalls mit dabei.

tar -cf E:\Backup\Archiv.tar [Pfad]

fasst den mit "[Pfad]" angegebenen Ordner schnell und ohne Komprimierung in der Datei "E:\Backup\Archiv.tar" zusammen.

tar -czf E:\Backup\Archiv.tar.gz [Pfad]

erzeugt ein Gzip-komprimiertes Archiv, was etwas länger dauert. Statt "z" (Gzip) kann man auch "j" (bzip2) oder "J" (xz) verwenden, wodurch das Archiv stärker komprimiert wird.

Ordnergrößen ermitteln: Die Zeile

Get-ChildItem -file -recurse [Pfad] | Measure-Object -property length -Sum

gibt die Größe des mit "[Pfad]" angegebenen Ordners aus. Die jeweiligen Einzelgrößen der Unterverzeichnisse gibt

FolderSizes [Pfad]

aus. Die zusätzliche Funktion "FolderSizes" ist in der Profildatei "Microsoft.PowerShell_ profile.ps1" enthalten, die Sie mit PC-WELT Skript-Downloader einrichten. In der Bash-Shell kann man

du -h [Pfad]

starten. Du.exe ist ein nützliches Tool von Microsoft-Sysinternals mit ähnlicher Funktion. Es lässt sich über Windows System Control Center herunterladen und installieren. Der Aufruf erfolgt mit

du -v [Pfad]

und zeigt die Größe der einzelnen Ordner und die Gesamtsumme an.