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

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

有没有办法在会话之间保留 cmd 命令历史记录?

答案1

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

https://devblogs.microsoft.com/powershell/perserving-command-history-across-sessions/已归档

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

答案2

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

  1. 安装碰杯,它cmd.exe通过持久历史记录等功能进行了增强。只需安装它,然后cmd照常打开即可。

  2. 安装交通部/LE免费版本,这是一个单独的程序,再次提供了增强版本cmd.exe

答案3

保存历史记录是一个小的工作流程 - 这里有一个不太“繁重”的方法来做到这一点(无需外部库)。

创建一个 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

每次我关闭会话时,我都会点击“退出” - 或者如果我担心会话中途丢失历史记录,我会点击“保存”。如果我想在历史记录中查找某些内容,我只需点击“历史关键字”。


根据 @dave_thompson_085 的评论,AutoRun如果您不想使用开关,该功能会很好用/K。如果您正确设置了注册表项,则.cmd.bat不需要位于 中%AppData%,它可以位于现有的同一位置。

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

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

自动运行更新(2020 年 10 月):我已经使用此功能多年了,但我想指出,许多依赖 CMD 运行后台命令的程序(Visual Studio、Win32 应用程序)非常如果在传递的 CMD 命令(例如 VS 开发人员提示)之前运行了任何内容,则会感到困惑。如果这造成麻烦,请切换到该/K方法。

答案4

我的解决方案可能比黑客攻击更糟糕——甚至是作弊。

我将会话命令的历史记录保存到一个文件中,例如,

doskey /h > mysession.txt

然后,在下一个会话中,我mysession.txt用文本编辑器打开,复制我感兴趣的命令,并将其粘贴到cmd/shell会话中,并直接执行它。

投反对票是理所当然的^_^

相关内容