如何使用 Python 访问命令提示符历史记录

How can I access command prompt history with Python

在Windows10,Python3.6

假设我打开了一个命令提示符会话 (不是 Python 命令提示符或 Python 交互式会话) 并且我一直在设置一个具有大量配置或类似性质的环境。有什么方法可以让我访问我在该会话中使用的命令的历史记录,例如 python 模块?

理想情况下,我希望能够将此历史记录导出到一个文件中,以便将来重复使用。

示例:

在命令提示符中键入:python savecmd.py 并保存该会话的历史记录。

您根本不需要 Python,为此使用 doskey 设施,即:

doskey /history

将打印出当前会话的命令历史记录,如果要保存它,您可以将其重定向到一个文件:

doskey /history > saved_commands.txt

如果您真的想在 Python 中执行此操作,您可以使用 subprocess.check_output() 捕获命令历史记录,然后将其保存到文件中:

import subprocess

cmd_history = subprocess.check_output(["doskey", "/history"])
with open("saved_commands.txt", "wb") as f:
    f.write(cmd_history)

你实际上要求 3 种不同的东西。

  1. 获取Python REPL 命令历史记录
  2. 从“提示”获取信息,我假设是 Powershell 或 CMD.exe。
  3. 将历史列表保存到文件。

要从 REPL 中获取历史记录,请使用:

for i in list(range(readline.get_current_history_length())): print(readline.get_history_item(i))

不幸的是,REPL中没有history,从外部使用时,如上,所以你需要找到history文件并打印它。

从 powershell 查看历史文件:

function see_my_py_history{ cat C:\<path-to>\saved_commands.txt }

Set-Alias -Name seehist -Value see_my_py_history