有没有办法在会话之间保留 cmd 命令历史记录?
答案1
切换到使用 PowerShell,并按照以下站点上的说明启用历史记录:
https://devblogs.microsoft.com/powershell/perserving-command-history-across-sessions/(已归档)
或者,在 cmd.exe 中,您可以在会话结束时使用“doskey /history”来显示您在该会话中输入的内容,但无法真正将其加载到下一个会话中。
答案2
答案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 功能的更多信息AutoRun
:https://superuser.com/a/302553/333316
自动运行更新(2020 年 10 月):我已经使用此功能多年了,但我想指出,许多依赖 CMD 运行后台命令的程序(Visual Studio、Win32 应用程序)非常如果在传递的 CMD 命令(例如 VS 开发人员提示)之前运行了任何内容,则会感到困惑。如果这造成麻烦,请切换到该/K
方法。
答案4
我的解决方案可能比黑客攻击更糟糕——甚至是作弊。
我将会话命令的历史记录保存到一个文件中,例如,
doskey /h > mysession.txt
然后,在下一个会话中,我mysession.txt
用文本编辑器打开,复制我感兴趣的命令,并将其粘贴到cmd
/shell
会话中,并直接执行它。
投反对票是理所当然的^_^
。