Besser als doskey: Befehle in cmd.exe permanent speichern mit PyCmd


    Tags:

    Eine Defizit, das die Eingabeaufforderung von Windows im Vergleich zu mächtigeren Shells aufweist, besteht darin, dass die Befehlshistorie nicht über Sitzungen hinaus gespeichert wird. Gerade wenn man an der Lösung eines Problems arbeitet und dafür Kommandozeilenprogramme mit vielen Parametern nutzt, dann ist es wünschenswert, die eingegebenen Befehle auch nach einem Neustart wieder parat zu haben. Das kostenlose PyCmd sorgt genau dafür und bietet zusätzliche intelligente Erweiterungen für cmd.exe.

    Der Windows-eigene Kommandoprozessor bietet bekanntlich einige Funktionen, um in der Befehlshistorie zu navigieren oder sie anzuzeigen. Sie lassen sich direkt über Funktionstasten abrufen (F7 zeigt gespeicherte Befehle an, ALT+F7 löscht die Historie, F8 durchsucht sie und F9 wählt einen Befehl anhand seiner Nummer aus). Diese Aktionen lassen sich auch über das Dienstprogramm doskey ausführen, so zeigt etwa

    doskey /history

    alle gepeicherten Eingaben an. Egal welcher Methode man sich bedient, sobald man die Eingabeaufforderung schließt, ist die Historie verloren. Eine Behelfslösung könnte darin bestehen, vor dem Ende der Sitzung alle gespeicherten Befehle mit

    doskey /history > cmd-history.txt

    zu kopieren und sich später über copy & paste daraus zu bedienen.

    PyCmd als Shell für cmd.exe

    Eine bessere Lösung für dieses Problem bietet das Open-Source-Tool PyCmd. im Gegensatz zu nircmd, das den Kommandoprozessor um zusätzliche Befehle "von innen" erweitert, legt sich PyCmd als Hülle um cmd.exe und fängt alle Eingaben ab, so dass der Benutzer nur mehr indirekt mit cmd.exe interagiert. Dies erlaubt dem Tool, die Kommandozeile durch zusätzliche Editier- und Vervollständigungsfunktionen aufzumöbeln sowie die eingegebenen Befehl persistent abzulegen.

    Daher kann man auch Befehle wieder hervorholen, die man in früheren Sitzungen eingegeben hat. Dies funktioniert wie bei cmd.exe mit den Pfeiltasten oben/unten, wobei man ebenfalls die Historie durch Eingabe der ersten Zeichen eines gewünschten Eintrags filtern kann (Zum Beispeiel kann man mit "wm" alle Befehle durchlaufen, die mit dieser Zeichenkette beginnen, also etwa wmic).

    Persistente Historie für besuchte Verzeichnisse

    Neben den eingegebenen Befehlen merkt sich PyCmd aber auch alle Verzeichnisse, die man zuletzt besucht hat. Mit der Tastenkombination Alt + rechts bzw. Alt + links kann man durch diese Historie blättern, wobei die Shell diese Verzeichnisse dabei nicht nur anzeigt, sondern gleich dorthin wechselt. Auch die Liste der besuchten Verzeichnisse bleibt über eine Sitzung hinaus bestehen.

    PyCmd kann auch Umgebungsvariablen vervollständigen, bei mehrdeutigen Filtern zeigt es alle passenden Alternativen an.Die persistente Befehls- und Verzeichnishistorie ist indes nicht die einzige Verbesserung, die PyCmd der Eingabeaufforderung angedeihen lässt. Besonders komfortabel ist die Autovervollständigung von Umgebungsvariablen, so dass etwa die Eingabe von cd %US + Tab zu cd %USERPROFILE% expandiert wird. Wenn allerings wie in diesem Beispiel der Filter auf mehrere Variablen zutrifft (etwa auch auf %USERDOMAIN%), dann vervollständigt PyCmd nur bis an die Stelle, ab der sich die Alternativen unterscheiden und zeigt eine Liste der zutreffenden Variablen an. Dieses von Unix-Shells bekannte Verhalten zeigt das Tool auch bei der Autovervollständigung von Dateinamen.

    Insgesamt bringt PyCmd willkommene Verbesserungen für den Kommandointerpreter von Windows, ohne dass man sich dafür auf eine neue Shell einlassen muss - denn man hat es abgesehen von einem veränderten (verkürzten) Prompt und erweiterten Editiermöglichkeiten weiterhin nur mit cmd.exe zu tun. Ein Mangel des Programms sind die allzu magere Dokumentation sowie die derzeit noch fehlenden Konfigurationsmöglichkeiten, etwa um die Zahl der Einträge in der Historie festzulegen.

    Keine Kommentare