有没有一个Windows shell工具可以保存历史记录?

tex*_*ern 10 shell history cmd

我用的是Windows 7 64bit.我发现cmd.exe和powershell都无法保存历史记录.这意味着当我退出shell时它丢失了我的命令历史记录.

有没有工具可以帮助cmd.exe或powershell记住历史记录?我尝试使用控制台2.控制台2很小,有一个标签界面.但是控制台2也记不起历史.也许有另一个前端可以做到这一点.

Mic*_*ley 6

以下答案来自Keith Hill(PowerShell Microsoft MVP)对powershell历史问题的回答:如何防止重复命令:

顺便说一句,如果你想在退出时自动保存它,你可以在2.0上这样做:

Register-EngineEvent PowerShell.Exiting {
    Get-History -Count 32767 | Group CommandLine | 
    Foreach {$_.Group[0]} | Export-CliXml "$home\pshist.xml" } -SupportEvent
Run Code Online (Sandbox Code Playgroud)

然后在负载恢复时,您只需要:

Import-CliXml "$home\pshist.xml" | Add-History
Run Code Online (Sandbox Code Playgroud)


Don*_*ank 5

Windows PowerShell博客上有一篇很好的帖子,它提供了一种在会话中保留命令历史记录的方法:

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

用于导出和导入命令历史记录的相关命令是Get-HistoryAdd-History.将以下内容添加到PowerShell配置文件中:

Register-EngineEvent PowerShell.Exiting {
    Get-History | Export-Csv $HOME\pshist.csv
} | Out-Null

if (Test-Path $Home\pshist.csv) {
    Import-Csv $HOME\pshist.csv | Add-History
}
Run Code Online (Sandbox Code Playgroud)

这将保留历史记录,使您仍然可以检查历史记录的开始和结束时间,并计算每个历史记录的持续时间.

但是有一个警告:上面的脚本只会记住最近退出的PowerShell窗口的历史记录.如果您同时使用多个shell会话,那么除了其中一个会话之外的所有会话的历史记录都将丢失.