有没有办法自动将命令历史保存到 cmd.exe 中的文件中,类似于 bash 的 bash_history?

Posted

技术标签:

【中文标题】有没有办法自动将命令历史保存到 cmd.exe 中的文件中,类似于 bash 的 bash_history?【英文标题】:Is there any way to automatically save command history to a file in cmd.exe, similar to bash's bash_history? 【发布时间】:2012-03-21 11:37:32 【问题描述】:

我知道有人可以做到

doskey /history 

在特定时间点保存命令历史记录,但我想知道是否有办法在发出命令时主动将命令历史记录保存到文件中。

命令提示符一旦关闭,历史记录就会丢失,因此很容易在完成后意外关闭命令提示符。

我想可以这样说:

log Commands.log

然后发出我的命令,并将命令保存到 Commands.log。

【问题讨论】:

【参考方案1】:

您可以创建一个 doskey 宏来重新映射 EXIT 命令,如下所示:

doskey exit=doskey/history$g$gc:\temp\commands.log$texit $1 $2

这会将您的命令历史记录的内容附加到一个名为“c:\temp\commands.log”的文件中,每次您通过键入“exit”退出提示时。

注意:我还没有测试过将它与 EXIT 的“/B exitCode”参数一起使用的潜在副作用,但不应该有任何副作用,因为您使用“$1 $2”捕获参数“无论如何。

这并不完全符合您的要求,但只要您使用 EXIT 退出(与仅关闭窗口相比),它就会捕获您的命令历史记录。

关于 DOSKEY 宏的更多信息和示例在这里: http://technet.microsoft.com/en-us/library/bb490894.aspx

【讨论】:

该命令运行良好,但您必须指定一个已经存在的目录 - 它不会为您创建目录。据我所知,此宏仅在当前 dos 会话期间持续。所以每次打开命令提示符时都必须输入。 如果您使用以下目标创建快捷方式:%windir%\system32\cmd.exe /K doskey exit=doskey/history$g$g%USERPROFILE%\commands.log$texit $1 $2 this a) 遵循将其保存到主目录的 unix 概念,b) 在您运行此快捷方式时运行此命令,以便您不必每次都输入【参考方案2】:

我知道现在已经晚了,但我可以看到两种选择。

先clink 或更完整的东西,包括cmder

每次打开 cmd 都会叮当一声,效果很好

【讨论】:

【参考方案3】:

正如 Novy 已经说过的,试试 Clink;但也可以使用以下链接,因此它也可以在管理员模式下工作。 run cmd with clink as administrator in windows to save your command history permanently

【讨论】:

以上是关于有没有办法自动将命令历史保存到 cmd.exe 中的文件中,类似于 bash 的 bash_history?的主要内容,如果未能解决你的问题,请参考以下文章

使用cmd.exe以UTF-8编码保存文本文件

Bash基础特性-命令历史

将 .trace 文件保存到其他位置

Linux history命令详解

使用任务计划程序创建任务以使用命令运行 cmd.exe

Linux 的 history 命令使用大全