Herr der Tasten

Haben Sie schon mal versucht, unter Windows das Inhaltsverzeichnis eines Ordners für ein CD-Inlay per Drucker zu Papier zu bringen? Oder 42 Dateien in einem Rutsch eine neue Endung zu verpassen? Geht auch nicht. Jedenfalls nicht nach Windows-Manier mit Maus, Drag & Drop und Dialogfeldern.

In Pocket speichern vorlesen Druckansicht 123 Kommentare lesen
Lesezeit: 15 Min.
Von
  • Hajo Schulz
Inhaltsverzeichnis

Neulich in der c't-Redaktion: „Mein Browser hängt! Kann mal einer von den Linuxern nachschauen, ob der Proxy wieder gestorben ist?“ Stille. Die Pinguin-Fraktion meetete gerade über den nächsten Open-Source-Schwerpunkt. „Nö, der Proxy geht noch“, kam Sekunden später meine Antwort. Trotz Windows. Wo er denn klicken müsse, um das in Zukunft selbst rauszufinden, wollte der Kollege wissen. „Klicken? Keine Ahnung. Ich hab ihn halt angepingt.“

Tatsächlich war kein einziger Mausklick erforderlich, denn die Eingabeaufforderung, in die ich den ping-Befehl eingegeben habe, ist bei mir eh ständig geöffnet. Schon wegen der Geschwindigkeit, mit der ich darin arbeiten kann: Bis etwa mein altersschwacher Zweitrechner „für besondere Aufgaben“ den Explorer in einen anderen Ordner gequält hat, sind per Kommandozeile die Dateien längst kopiert. Und die Tipparbeit hält sich auch in Grenzen, wenn man sich die am häufigsten benutzten Befehle per Makros oder Batch-Dateien vorkonfiguriert.

Überdies ist das Arbeiten in der Konsole mit der Zeit immer komfortabler geworden: Mit dem command.com von DOS selig oder der „MS-DOS-Eingabeaufforderung“ aus Windows-95-Tagen hat das, was Windows 2000 und XP bieten, nicht mehr viel zu tun - wenn man denn die neueren Funktionen, Befehle und Tastendrücke kennt. Anwendern, die erst nach Einführung der Maus zum PC gekommen sind, stellt dieser Artikel die wichtigsten Kniffe vor, die den Einstieg in die Welt der Kommandozeile erleichtern. Altgediente DOS-Hasen dürften nur hier und da in Nostalgie schwelgen: Wer in den letzten Jahren nicht in die Windows-Hilfe geschaut hat, wird staunen, wie sehr sich die alte „DOS-Box“ zu einer fast schon komfortablen Konsole gemausert hat.

Nicht nur der eigentliche Umgang mit der Kommandozeile, auch die Auswahl an zur Verfügung stehenden Befehlen hat sich im Laufe der Zeit stark verbessert. Viele von ihnen erschließen - wie ping - Funktionen, die man im GUI vergeblich sucht. Wie man von diesen Kommandos am besten profitiert und welche Befehle es verdienen, aus ihrem Schattendasein ans Licht geholt zu werden, schildert der Artikel ab Seite 142 in c't 16/03.

Ein weiterer Artikel (siehe S. 146 in c't 16/03) zeigt schließlich die Möglichkeiten, die sich Anwendern eröffnen, die vor ein bisschen Programmierung nicht zurückschrecken: Der aktuelle Dialekt der Batch-Sprache reicht in vielen Belangen an andere Skriptsprachen heran und eignet sich damit vorzüglich, den täglichen Kleinkram an Datenpflege und Systemmanagement zu automatisieren oder völlig neue Funktionen zu erfinden.

Wie bei jedem anderen Programm kann die Verknüpfung zum Starten der Eingabeaufforderung nicht nur im Startmenü liegen, sondern auch auf dem Desktop, in der Schnellstartleiste oder sonst wo. Wer die Konsole häufig benutzt, tut also gut daran, die Verknüpfung aus dem Startmenü an einen schneller erreichbaren Ort zu kopieren und dieser vielleicht noch über den per Rechtsklick erreichbaren Befehl „Eigenschaften“ eine Tastenkombination zuzuweisen.

Um eine weitere beliebte Startmöglichkeit der Befehlszeile schätzen zu lernen, muss man wissen, dass beim Arbeiten mit ihr immer genau ein Verzeichnis eines Laufwerks das so genannte aktuelle Verzeichnis ist: Nur Dateien in diesem Ordner kann man ansprechen, ohne ihnen einen Pfad voranstellen zu müssen. Zum Wechseln des aktuellen Verzeichnisses dient der Befehl chdir oder kurz cd, der als Argument - wie bei allen Befehlen üblich, durch ein Leerzeichen abgetrennt - den Namen des Ordners benötigt, in den man wechseln will.

Wer zum Organisieren von Dateien und Ordnern normalerweise den Explorer benutzt, aber bei speziellen Operationen doch hin und wieder auf die Kommandozeile zurückgreifen will, wird sich über eine Möglichkeit freuen, diese so zu starten, dass auch in ihr das gerade im Explorer bearbeitete Verzeichnis voreingestellt ist. Eine solche Möglichkeit lässt sich recht einfach in das Kontextmenü von Verzeichnissen einbinden. Dazu startet man den Registrierungseditor regedit, navigiert zum Schlüssel HKEY_CLASSES_ROOT\Directory\shell und erzeugt dort einen Unterschlüssel mit beliebigem Namen, etwa cmd. In dessen „(Standard)“-Wert gehört das, was im Kontextmenü erscheinen soll, also zum Beispiel „Eingabeaufforderung in diesem Ordner“. Unter dem neuen Schlüssel ist dann ein weiterer Schlüssel zu erzeugen, der den Namen command haben muss. In dessen „(Standard)“-Wert schließlich trägt man die Befehlszeile zum Öffnen der Eingabeaufforderung ein:

cmd.exe /k "cd %L" 

Dabei ist cmd.exe der Name des auszuführenden Programms für die Eingabeaufforderung. Mit der Option /k weist man es an, zunächst den dahinter folgenden Befehl auszuführen und dann auf weitere Eingaben zu warten. Und dieser Befehl schließlich ist das eben schon erwähnte cd; das Argument %L ersetzt der Explorer beim Anwählen des neuen Menüeintrags durch den (langen und eventuell Leerzeichen enthaltenden) Namen des angeklickten Ordners.

Einmal gestartet, präsentiert sich die Eingabeaufforderung als recht schmuckloses schwarzes Fenster mit ein paar Zeilen hellgrauem Text. Wem die Darstellung nicht gefällt, der findet im Systemmenü dieses Fensters den Befehl Eigenschaften, mit dessen Hilfe sich Dinge wie Schriftart und -größe, Vorder- und Hintergrundfarbe und manches andere anpassen lassen. Empfehlenswert ist, auf dem Register Layout die voreingestellte Fensterhöhe auf 50 Zeilen zu verdoppeln und die Fensterpuffergröße etwas großzügiger zu bemessen, etwa auf 300 bis 500 Zeilen. Die erste Zahl gibt an, wie viele Zeilen Text das Fenster am Stück anzeigt, die zweite dreht an einem Komfortmerkmal, das cmd.exe von der „DOS-Box“ früherer Windows-Versionen abhebt: Sie definiert die Größe des Speichers, aus dem der Rollbalken am rechten Rand Text zurückholen kann, der nach oben aus dem Fenster gerutscht ist. Die Breite sollte besser auf 80 Zeichen eingestellt bleiben, da manche Programme sonst nur noch wirren Zeichensalat ausgeben.

Interessant sind noch einige Einstellungen auf dem Register Optionen: Hier spart ein Häkchen bei „QuickEdit-Modus“ ein paar Mausklicks beim Kopieren von Text aus der Eingabeaufforderung in andere Anwendungen. Um ihn zu markieren, muss man ihn nur bei gedrückter Maustaste einrahmen und dann die Return-Taste drücken; ohne QuickEdit leitet der Befehl „Markieren“ aus dem Systemmenü das Kopieren ein. Die restlichen Optionen sind mit sinnvollen Einstellungen vorbelegt; in Einzelfällen verdienen lediglich noch die Parameter im Bereich „Befehlsspeicher“ Beachtung - dazu gleich mehr.

War es unter DOS und Windows 9x noch nötig, für einen leidlich komfortablen Befehlszeileneditor das Programm doskey in den Speicher zu laden, so sind die meisten seiner Funktionen bei neueren Windows-Versionen bereits in cmd.exe integriert. Lediglich zum Verwalten von Makros und einiger weiterer Optionen wird doskey hier noch benötigt. Der Editor weist im Vergleich zum sonst in Windows Gewohnten einige Absonderlichkeiten auf. So hängt der Cursor ausschließlich an der Tastatur; mit der Maus ist hier kein Blumentopf zu gewinnen. Die Steuertasten, um die Eingabemarke um ein Zeichen oder ein Wort nach rechts oder links sowie an den Anfang oder das Ende der Zeile zu bewegen, funktionieren wie gewohnt. Dagegen dienen die Rauf-, Runter-, Bild-auf- und Bild-ab-Tasten dazu, durch die Historie der vorher eingegebenen Kommandos zu blättern; die letzten beiden springen an den Anfang beziehungsweise ans Ende dieser Liste. Auch wenn ein eingetippter langer Befehl auf die nächste Bildschirmzeile umbricht, verwaltet ihn der Editor wie eine einzige Zeile - ein irrtümlicher Druck auf die Cursor-hoch-Taste in einem solchen vermeintlichen Zweizeiler hat schon manchen Fluch ausgelöst, denn er überschreibt das aktuell Geschriebene mit dem zuletzt abgesetzten Befehl. Ein Druck auf ESC löscht die Eingabezeile.

Weitere Editiermöglichkeiten stellen die Funktionstasten F1 bis F5 zur Verfügung. Ihre - äußerst gewöhnungsbedürftigen - Bedeutungen sind in der Windows-Hilfe zum Thema doskey dokumentiert. Schon eher sinnvoll einsetzbar sind die Tasten F7 bis F9: Mit ersterer bekommt man eine Liste der zuletzt eingegebenen Befehle angezeigt, in der man per Cursor-Tasten einen auswählen und mit Return erneut ausführen kann. Ein Druck auf die Rechts- oder Linkstaste kopiert den ausgewählten Eintrag zur weiteren Bearbeitung wieder in die Eingabezeile. Wenn man schon ungefähr weiß, welcher Befehl wiederholt werden soll, kann man auch die ersten paar Zeichen eingeben und ein- oder mehrmals F8 drücken: Doskey kramt dann die Befehle aus seiner History hervor, die mit den eingetippten Zeichen beginnen. F9 schließlich bietet einen direkten Zugriff per Nummerneingabe auf einen zwischengespeicherten Befehl.

Die Anzahl der Befehle, die sich doskey merkt, lässt sich in den Eigenschaften der Eingabeaufforderung auf dem Register „Optionen“ einstellen: Sie verbirgt sich hinter dem Feld „Puffergröße“. Mit dem Eintrag „Anzahl der Puffer“ hat es folgende Bewandtnis: Der Editor der Eingabeaufforderung ist nicht nur für die DOS-Shell zuständig, sondern auch für andere Programme, die eine interaktive Eingabezeile verwenden, etwa den textbasierten FTP-Client ftp oder verschiedene Debugger. Für jede derartige Anwendung verwaltet doskey eine eigene Befehlshistory, und die „Anzahl der Puffer“ gibt an, wie viele solcher Listen es vorhalten soll. Dabei zählen aber immer nur Programme, die aus derselben Eingabeaufforderung heraus gestartet wurden - zwischen einzelnen Sitzungen wird die History ohnehin nicht gespeichert.

Beim Arbeiten mit der Eingabeaufforderung ist es recht häufig nötig, Verzeichnis- oder Dateinamen einzugeben. Dabei kann man durch zwei verschiedene Kniffe einiges an Tipparbeit sparen. Der erste bedeutet einen Rückgriff auf die Maus und die grafische Windows-Oberfläche: Wenn man nämlich per Drag & Drop eine Datei oder einen Ordner aus dem Explorer auf ein Eingabeaufforderungsfenster zieht, wird deren kompletter Name inklusive Pfad an der aktuellen Cursor-Position in die gerade bearbeitete Befehlszeile eingefügt.

Cooler, weil ohne Maus zu bewerkstelligen, ist ein zweiter Tipp: Bei einem Druck auf die Tab-Taste versucht der Eingabeeditor das, was vor dem Cursor steht, zu einem existierenden Datei- oder Verzeichnisnamen zu ergänzen. Am Anfang der Zeile oder nach einem Leerzeichen findet die Suche im aktuellen Verzeichnis statt. Zwischen mehreren Möglichkeiten blättern weitere Tabs. So kann man mit folgender Tastenfolge aus jedem Verzeichnis auf der Datenplatte nach \Dokumente und Einstellungen\Albert\Eigene Dateien wechseln:

c d \ d o k \ \ e i g 

Die Anzahl der Tab-Tastendrücke kann dabei je nach Benutzername sowie vorhandenen Dateien und Ordnern variieren, aber schneller als die komplette Pfadeingabe ist diese Methode allemal - in vielen Fällen sogar schneller als die Navigation per Explorer.

Wem der Tabulator als Schnelltaste nicht gefällt, der kann den ASCII-Code einer genehmeren Tastenkombination in die Registry eintragen, und zwar in den Wert CompletionChar im Schlüssel HKEY_CURRENT_USER\Software\Microsoft\Command Processor. Eine Null und alles über 32 (0x20, dem ASCII-Code für die Leertaste) schalten die Funktion aus. Darunter kann man die Tastenkombination abzählen: 1 steht für Strg-A, 2 für Strg-B und so weiter. Die Tab-Taste hat in dieser Auflistung dieselbe Nummer wie Strg-I (9). Für diesen Zweck ungeeignet sind der Wert 8 (Strg-H), denn er entspricht der Rücktaste, und der Wert 13 (0x0d; Strg-M), der gleichbedeutend mit der Return-Taste ist. Ein weiterer, standardmäßig nicht vorhandener DWORD-Wert namens PathCompletionChar im selben Registry-Schlüssel definiert nach gleichem Muster eine weitere Tastenkombination, die aber zum Komplettieren der Eingabe ausschließlich Verzeichnisnamen verwendet.

Anders als bei Windows-Programmen steht der Anwender beim ersten Öffnen der Eingabeaufforderung zunächst einmal recht ratlos da: Es gibt keine Menüs, Schaltflächen oder sonstige Hinweise darauf, was man denn nun eigentlich anfangen kann. Nicht mal ein Druck auf die F1-Taste bringt einen weiter. Mit der Befehlszeile zu arbeiten, heißt tippen: Man erteilt dem System Befehle, indem man ihren Namen per Tastatur eingibt und die Zeile mit einem Druck auf die Return-Taste abschließt. Der Rechner führt daraufhin die gewünschten Aktionen aus, schreibt die angeforderten Informationen - oder auch eine Fehlermeldung - in dasselbe Fenster und steht anschließend für weitere Eingaben zur Verfügung.

Eine Liste der grundlegenden Befehle spuckt das System aus, wenn man den Befehl help eingibt. Die meisten der angezeigten Kommandos benötigen noch weitere Parameter, etwa einen oder mehrere Datei- oder Ordnernamen oder auch so genannte Schalter, die das Verhalten des Befehls im Detail ändern. Letztere bestehen in der Regel aus einem Buchstaben mit einem vorangestellten Schrägstrich (/). Grundsätzlich muss zwischen dem eigentlichen Befehl und seinen Argumenten sowie zwischen einzelnen Parametern jeweils ein Leerzeichen stehen. Die eingangs erwähnte Aufgabe, mehreren Dateien eine neue Endung zu verpassen, erledigt beispielsweise der Aufruf

ren *.abc *.xyz 

Dabei ist ren der eigentliche Befehl, eine Kurzform von rename. Er dient zum Umbenennen einer einzelnen oder mehrerer Dateien. Als Argumente benötigt er den Original-Dateinamen und den gewünschten neuen Namen. Im Beispiel handelt es sich bei beiden um eine Dateimaske, sodass alle passenden Dateien einen neuen Namen bekommen.

Welche Argumente ein bestimmter Befehl benötigt, offenbart sich durch die Eingabe von help befehl oder auch befehl /?. Eine genauere und vollständigere Beschreibung der auf der Kommandozeile verwendbaren Befehle findet sich außerdem in der Windows-Hilfe in einem Artikel mit dem Namen „Befehlszeilenreferenz A-Z“. Leider hat Microsoft vergessen, ihn in den Hilfe-Index einzutragen, er ist nur über die Volltextsuche zu finden. Immerhin kennt die Hilfe eine eigene Favoritenliste - die Befehlszeilenreferenz gehört dort definitiv hinein, denn um ein wenig Lektüre kommt man bei der Beschäftigung mit der Eingabeaufforderung nicht herum. Einige Befehle werden zwar im Folgenden noch vorgestellt, aber eine Komplettübersicht ist schon aus Platzgründen nicht möglich.

Wenn der Umgang mit der Konsole so unintuitiv ist, stellt sich natürlich die Frage, warum man sich überhaupt damit beschäftigen sollte und nicht einfach die in der grafischen Windows-Benutzeroberfläche zur Verfügung stehenden Möglichkeiten nutzt. Darauf gibt es mehrere Antworten, von denen die erste schon erwähnt wurde: Im GUI fehlen wichtige Funktionen, jedenfalls im Lieferumfang von Windows. Andererseits kann niemand vernünftigerweise dafür plädieren, den Explorer und die Systemsteuerung komplett über Bord zu werfen und die damit zu lösenden Aufgaben nur noch per Befehlseingabe zu erledigen. Vielmehr sollte man ein vernünftiges Nebeneinander der beiden Wege anstreben.

(hos)