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
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.
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.
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.