Befehlsverlauf für cmd.exe zwischen Sitzungen beibehalten?

75

Gibt es eine Möglichkeit, den Cmd-Befehlsverlauf zwischen Sitzungen beizubehalten?

Feuerfusion
quelle

Antworten:

22

Wechseln Sie zu PowerShell, und befolgen Sie die Anweisungen auf der folgenden Website, um den Verlauf zu aktivieren:

http://blogs.msdn.com/b/powershell/archive/2006/07/01/perserving-command-history-across-sessions.aspx

Alternativ können Sie in cmd.exe "doskey / history" am Ende Ihrer Sitzung verwenden, um anzuzeigen, was Sie in dieser Sitzung eingegeben haben. Sie können es jedoch nicht wirklich in die nächste Sitzung laden.

Hyppy
quelle
6
Ich hestitierte zu +1, weil "Umsteigen auf PowerShell" nicht unbedingt so einfach ist, wie es sich anhört, je nachdem, für was für Dinge Sie die Konsole verwenden, aber die Informationen sind soooooooooo genau;)
Shinrai
2
Einverstanden. Ich habe gezögert, es niederzulegen, aber es ist die einzige wirkliche Antwort, die ich finden kann. Ich habe versucht, auf einer Workstation, die ich zuvor hatte, etwas Ähnliches in Gang zu
setzen
Beachten Sie, dass dies eine Liste der von Ihnen eingegebenen Befehle enthält, jedoch NICHT die Liste der Befehle ändert, die angezeigt werden, wenn Sie die Aufwärtstaste auf der Tastatur drücken. Mit anderen Worten, es hat keinen Einfluss auf die "Doskey" -Funktionalität.
Mark
Zu beachten ist, dass einige Befehle, die in cmd funktionieren, in PowerShell nicht gleich funktionieren, z. B. mvn install `-Dmaven.test.skip = true, ein Backtick wie vor dem Bindestrich erforderlich macht
Drenai
62

Ich habe zwei Möglichkeiten gefunden, für die kein Wechsel zu PowerShell erforderlich ist.

  1. Installieren Sie Clink , das sich cmd.exedurch einen beständigen Verlauf und vieles mehr auszeichnet . Einfach installieren und dann cmdwie gewohnt öffnen .

  2. Installieren Sie die kostenlose TCC / LE- Version, bei der es sich um ein separates Programm handelt, und stellen Sie erneut eine erweiterte Version von bereit cmd.exe.

Spatz
quelle
5
Ich bin ein bisschen besorgt gegen systemweites Ersetzen von, cmd.exeaber es ist eine gute Antwort, und Klirren unterstützt auch einen Einspritzmodus.
Lorenz Lo Sauer
4
Wow, Clink ist fantastisch.
Chris Weber
4
Klirren ist genial. Ersetzt cmddamit, war kein Problem, sehr zufrieden damit.
Oberst Panic
2
Klirren ist unglaublich!
Hoang Huynh
3
Dies sollte die akzeptierte Antwort sein. Denn das ist es, was von der Frage gestellt wird .. !! Dies ist besser als jede andere alternative Anwendung.
Samitha Chathuranga
12

Das Speichern des Verlaufs ist ein kleiner Arbeitsablauf - hier ist eine weniger "schwere" Möglichkeit, dies zu tun (keine externen Bibliotheken).

Erstellen Sie eine bat / cmd-Datei, um Ihren Verlauf einzurichten. In diesem Fall habe ich sie MyEnvironment.cmd genannt:

doskey save=doskey /history $g$g C:\CmdHistory.log
doskey quit=doskey /history $g$g C:\CmdHistory.log $T exit
doskey history=find /I "$*" C:\CmdHistory.log
cls

Führen Sie dies dann über "Start-> Ausführen" aus (Sie können auch hierfür einen Alias ​​einrichten):

cmd.exe /K C:\MyEnvironment.cmd

Jedes Mal, wenn ich eine Sitzung beende, drücke ich auf "Beenden" - oder wenn ich Angst habe, den Verlauf während der Sitzung zu verlieren, drücke ich auf "Speichern". Wenn ich nach etwas in der Geschichte greifen möchte, drücke ich einfach "history KEYWORD".


Laut dem Kommentar von @ dave_thompson_085 AutoRunfunktioniert die Funktion gut, wenn Sie den /KSchalter nicht verwenden möchten . Wenn Sie den Registrierungsschlüssel korrekt eingerichtet haben, muss .cmdoder .batmuss er nicht vorhanden sein %AppData%. Er kann sich an derselben Stelle befinden, an der er sich bereits befindet.

Wenn Sie den %AppData%Speicherort verwenden, beachten Sie, dass cmd wahrscheinlich im Ordner "Roaming" (anstelle des AppData-Stammverzeichnisses) nach Ihrer Batch-Datei sucht.

Weitere Informationen zur AutoRunCMD-Funktion: https://superuser.com/a/302553/333316

Coruscate5
quelle
Was $gund $twofür?
@ Chinggis6 $gfügt ein ein >und $tist ein Befehlstrennzeichen.
Superole
@Superole ah ok, g rößere als und t erminate, aber warum nicht zu verwenden >und &&Zeichen direkt im doskey alias?
@ Chinggis6, da dies den Befehl zum Erstellen des Alias ​​unterbrechen würde. Dann würde der Befehlsinterpreter annehmen, dass Sie doskey quit=doskey /historyFolgendes gemeint haben: zuerst die Ausgabe der Makroerstellung in einer Protokolldatei ausführen und speichern (entweder nichts oder eine Fehlermeldung); Als nächstes schließen Sie das Fenster (alles verwerfen). -Du könntest diesen Charakteren aber mit einem entkommen ^, denke ich. Wie ^>^>und ^&(... und ja, Sie brauchen nur ein kaufmännisches Und)
Superole
1
Statt explizit /kverwenden können AutoRun superuser.com/a/302553/333316
dave_thompson_085
2

Ich benutze Cygwin . Es bietet auch einige andere Funktionen, die Linux hat, aber Windows nicht.

Harun
quelle