我有简单的命令行应用程序,我想存储在程序启动之间输入的命令。
单独存储没问题,我知道怎么做,但是我怎么恢复呢?
Console
类没有任何设置历史记录的方法,如果我在应用程序开始时按向上箭头,它是空的。
msdn中用于非托管代码的方法对我没有帮助,好的答案可以告诉我如何在 c# 中使用它们来获得我需要的东西。
我的想法是用ReadKey
only 覆盖向上箭头并以“硬”的方式进行操作,但如果有更简单的方法,我会很高兴。
我有简单的命令行应用程序,我想存储在程序启动之间输入的命令。
单独存储没问题,我知道怎么做,但是我怎么恢复呢?
Console
类没有任何设置历史记录的方法,如果我在应用程序开始时按向上箭头,它是空的。
msdn中用于非托管代码的方法对我没有帮助,好的答案可以告诉我如何在 c# 中使用它们来获得我需要的东西。
我的想法是用ReadKey
only 覆盖向上箭头并以“硬”的方式进行操作,但如果有更简单的方法,我会很高兴。
我只需将命令保存为 XML 或关系数据库,当需要时,我会将 XML 反序列化为存储为列表或可能是数组的适当对象(如果您有定义数量的命令,例如最后 10 个)。然后覆盖您提到的适当事件,并通过保留您在列表中的位置的计数器来迭代命令对象列表。
如果有人寻找类似的东西,我最终使用了 powershell 和一组脚本,但我设法设置了 powershell 历史记录:
https://software.intel.com/en-us/blogs/2014/06/17/giving-powershell-a-persistent-history-of-commands
$HistoryFilePath = Join-Path ([Environment]::GetFolderPath('UserProfile')) .ps_history
Register-EngineEvent PowerShell.Exiting -Action { Get-History | Export-Clixml $HistoryFilePath } | out-null
if (Test-path $HistoryFilePath) { Import-Clixml $HistoryFilePath | Add-History }
# if you don't already have this configured...
Set-PSReadlineKeyHandler -Key UpArrow -Function HistorySearchBackward
Set-PSReadlineKeyHandler -Key DownArrow -Function HistorySearchForward
将该代码保存到文件:C:\Users\\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1