是否在会话之间保留cmd.exe命令历史记录?


Answers:


22

切换到使用PowerShell,然后按照以下站点上的说明启用历史记录:

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

另外,在cmd.exe中,您可以在会话结束时使用“ doskey / history”来显示您在该会话中键入的内容,但是无法将其真正加载到下一个会话中。


6
我犹豫要为此+1,因为“切换到使用PowerShell”不一定像听起来那样简单,这取决于您正在使用控制台的类型,但是信息准确无误;)
Shinrai 2011年

2
同意 我犹豫了下来,但这是我唯一能找到的真实答案。我试图在以前使用过的工作站上进行类似的操作,但是cmd.exe却没有持久的历史记录机制:-(
Hyppy 2011年

请注意,这将保留您键入的命令列表,但不会更改当您按键盘上的向上键时将出现的命令列表。换句话说,它不会影响“ doskey”功能。
标记

应该注意的是,某些在cmd中运行的命令在PowerShell中无法正常运行,例如mvn install`-Dmaven.test.skip = true将需要反引号,如破折号所示
Drenai

62

我发现了2种方法,两种方法都不需要切换到PowerShell。

  1. 安装Clink,它将通过cmd.exe持久历史记录和更多内容进行增强。只需安装它,然后照常打开即可cmd

  2. 安装免费的TCC / LE版本,它是一个单独的程序,再次提供的增强版本cmd.exe


5
我对系统范围的替换有些担心,cmd.exe但它是一个很好的答案,并且clink也支持注入模式。
洛伦兹·劳萨尔

4
哇,碰杯很棒。
克里斯·韦伯

4
碰杯很棒。换成cmd它,一直没问题,对此非常满意。
Panic Panic

2
碰杯很棒!
Hoang Huynh 2014年

3
这应该是公认的答案。因为这是问题所问的.. !! 最好不要使用任何其他替代应用程序。
Samitha Chathuranga

12

保存历史记录是一个小的工作流程-这是一种不太“繁重”的方式(没有外部库)。

创建一个bat / cmd文件来设置您的历史记录,在这种情况下,我将其称为MyEnvironment.cmd:

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

然后从“开始->运行”中运行它(您也可以为此设置一个别名):

cmd.exe /K C:\MyEnvironment.cmd

每次关闭会话时,我都单击“退出”-或者如果我害怕在会话中丢失历史记录,则单击“保存”。如果我想grep历史记录中的某些内容,只需点击“ history KEYWORD”。


根据@ dave_thompson_085的评论,AutoRun如果您不想使用该/K开关,则该功能可以很好地工作。如果您正确设置了注册表项,则.cmd.bat不必位于中%AppData%,它可以位于已经存在的相同位置。

如果确实使用该%AppData%位置,请注意,cmd可能会在“漫游”文件夹(而不是AppData根目录)中查找您的批处理文件。

有关AutoRunCMD功能的更多信息:https : //superuser.com/a/302553/333316


什么$g$t是?

@ Chinggis6 $g插入>$t是命令分隔符。
Superole

@Superole啊好吧,g大于和t终止,但是为什么不直接在doskey别名中使用>&&字符呢?

@ Chinggis6,因为那样会破坏创建别名的命令。然后,命令解释器将假设您的意思是:首先执行doskey quit=doskey /history宏创建的输出并将其保存在日志文件中(不执行任何操作或发送错误消息);接下来关闭窗口(丢弃所有内容)。- ^我想,您可以改用a 来逃避这些字符。像^>^>^&(...而且是的,您只需要一个&符)
Superole


2

我用cygwin。它还提供了Linux具有的其他功能,而Windows没有。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.