2

我有简单的命令行应用程序,我想存储在程序启动之间输入的命令。

单独存储没问题,我知道怎么做,但是我怎么恢复呢? Console类没有任何设置历史记录的方法,如果我在应用程序开始时按向上箭头,它是空的。

msdn中用于非托管代码的方法对我没有帮助,好的答案可以告诉我如何在 c# 中使用它们来获得我需要的东西。

我的想法是用ReadKeyonly 覆盖向上箭头并以“硬”的方式进行操作,但如果有更简单的方法,我会很高兴。

4

3 回答 3

1

我只需将命令保存为 XML 或关系数据库,当需要时,我会将 XML 反序列化为存储为列表或可能是数组的适当对象(如果您有定义数量的命令,例如最后 10 个)。然后覆盖您提到的适当事件,并通过保留您在列表中的位置的计数器来迭代命令对象列表。

于 2012-11-21T10:05:54.533 回答
1

我知道这是一个老问题,但我也在寻找答案。虽然找不到,所以我构建了 InteractivePrompt。它以NuGet 包的形式提供,您可以轻松扩展GitHub 上的代码。它具有当前会话的历史记录,但我计划实现在会话之间保存命令的功能。

这是一个非常有用的包装 DLL 的包,例如 SQLite。

于 2017-03-15T16:14:20.697 回答
0

如果有人寻找类似的东西,我最终使用了 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

于 2018-03-14T21:41:05.003 回答