题 是否有全球性的,持久的CMD历史?


有时我会忘记CMD命令的确切语法,然后我想搜索自己的CMD历史记录。显然,在同一个会话中,您可以使用向上和向下箭头键浏览它,但前CMD会话的历史记录如何?是否有文件,历史记录被写入的日志或是否全部转到数字Nirvana?

谢谢!


81
2017-12-17 18:06




您可以在退出之前劫持exit命令以自动保存日志: doskey exit=doskey /history ^>^> C:\path\to\cmdhistory.log $T exit $* 但是你需要弄清楚如何在每个命令提示符会话启动时自动执行它。 PS: 确保日志文件的路径是可写的。 C:\  对于非管理命令提示符不可写。 - ADTC
@ADTC:AutoRun应该处理'每次启动': superuser.com/a/302553/333316 要么 stackoverflow.com/a/17405182/2868801 - dave_thompson_085


答案:


不是原生的,但请查看: http://mridgers.github.io/clink/ ,使cmd.exe更有效率。从项目页面引用功能:

Powerful Bash-like line editing from GNU's Readline library.
Superior path completion (TAB).
Paste from clipboard (Ctrl-V).
Support for the completion of executables/commands, and environment variables.
Undo/Redo (Ctrl-_ or Ctrl-X, Ctrl-U)
Improved command line history.
Persists across sessions.
Searchable (Ctrl-R and Ctrl-S).
History expansion (e.g. !!, !<string>, and !$).
Scriptable completion using Lua.

59
2018-03-13 08:24



碰撞解决了一切 - Still.Tony
有没有计划在Windows中默认包含它? :d - Jaime Hablutzel
你能设置一个 ~/.inputrc 什么时候使用碰杯? (你知道它是否可以用于控制台或任何东西?) - Mike H-R
显然,请参阅文档 github.com/mridgers/clink/blob/master/docs/clink.md。 - Baris Demiray
...除了别名。 clink 恨 doskey;忘记你所有长达数年且精心分配的别名。这就是我停止使用它的原因。虽然我想念所有的功能。 - w17t


否,会话结束时无法保存Windows命令提示符历史记录。


19
2017-12-17 18:11



真的?你怎么会知道这事?很抱歉质问你,我猜你是对的但你怎么知道,除非你编写了该死的东西;) - raoulsson
好的,让我重新说一下:-) Windows命令解释器(“cmd.exe”)不提供任何支持保存/导出/保存历史记录,如果确实如此,微软没有记录它,也没有人能够找到它。当然,你可以尝试解决这个问题,就像肖恩建议的那样,但是(或似乎没有)内置支持。 - Massimo
您可以按F7查看当前会话的历史列表。 - jftuga
当前 session是这里的关键字。 - Massimo
您可以通过运行查看/保存历史记录 doskey.exe /history (这也是F7快捷方式的来源,BTW)但是没有办法在下一个会话中加载它。 - Coderer


Massimo是正确的,您的命令提示历史记录不会在会话中保持不变。您可以通过键入来关闭提示之前手动抓取此信息 doskey / history> history.txt

或者......你可以使用 电源外壳 作为你的CMD提示,然后按照 这个帖子 在会话中坚持你的历史。


14
2017-12-17 19:52





您可以使用 碰杯

Clink将本机Windows shell cmd.exe与GNU Readline库的强大命令行编辑功能相结合,后者提供了丰富的完成,历史记录和行编辑功能。

最简单的安装clink的方法就是使用 巧克力味。安装chocolatey后,您可以通过键入来安装clink

choco install clink

从下次启动cmd.exe开始,它应该跨会话存储历史记录。


10
2017-08-14 06:37



最后决定给 Chocolatey 因为这篇文章一枪。安装很简单 brew 在macOS中。现在我在Windows中有一个类似Bash的命令提示符! - TranslucentCloud


可以将当前历史记录保存到文件,

`$ doskey /history > somefile.txt`

但似乎没有办法将其作为历史加载回来。 只能使用命令行参数来加载和执行所有行,

cmd.exe /K somefile.txt

,加载doskey宏列表有什么用处。 此调用可以包含在快捷方式中,因此您不需要每次都键入它; 此参考有关此方法的一些其他信息

有一个类似的问题 在超级用户上 带来一些替代品,包括 碰杯,正如@RobertBak所建议的那样。


6
2018-03-23 13:15



嗯,要将它加载回历史记录,你不是只需要将它保存到.bat文件并运行它吗? - Pacerier
@Pacerier再次运行命令肯定会将它们包含在历史中,但它可能会产生很大的副作用。想象一下,您通过shell删除了一些文件,然后通过漫长而痛苦的过程在shell外部重新创建它们。通过您的过程重新加载历史记录会意外地再次删除文件。 - mMontu
@Pacerier你意识到“运行它”确实意味着执行所有这些命令,对吗?它不是简单地将它们加载到历史记录中,而是实际上让它们对您的系统产生一些影响。 - ADTC


命令历史:     启用命令历史记录(可以使用up和     向下箭头键)只需在命令执行doskey     提示。例如,要创建100个元素的命令历史记录:

doskey /listsize=100

参考:https://users.cs.jmu.edu/bernstdh/web/common/help/ntshell.php


1
2018-02-14 13:08



这根本不回答这个问题? - Chopper3
不适用于Windows 10。 - TranslucentCloud