You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从命令行获取Microsoft Office程序当前打开的编辑文件的绝对路径

你之前通过Win32_Process的CommandLine属性拿不到Office文档路径的原因是:Office进程的命令行仅在通过双击文件直接拉起程序时才会携带文档路径;如果是先启动Word/Excel主程序再打开文档、或是在程序内新建/编辑文档,命令行不会记录文档路径,因此该方法对Office场景不生效。

以下是两种可落地的解决方案:

方案1:调用Office COM接口(最稳定,仅适用于Office系列程序)

首先安装依赖:

pip install pywin32

获取Word打开的文档路径示例

import win32com.client

# 连接到当前运行的Word实例
word = win32com.client.GetActiveObject("Word.Application")
# 遍历所有打开的文档
for doc in word.Documents:
    print(f"文档名:{doc.Name},绝对路径:{doc.FullName}")

获取Excel打开的文档路径示例

import win32com.client

excel = win32com.client.GetActiveObject("Excel.Application")
for wb in excel.Workbooks:
    print(f"工作簿名:{wb.Name},绝对路径:{wb.FullName}")

说明:

  • 该方法可100%拿到准确的编辑中文件路径,兼容所有主流Office版本
  • 如果同时运行了多个Office实例,可通过win32com的GetObject方法逐个匹配进程PID关联
  • 使用结束后建议手动释放COM对象避免残留后台进程:del word(不需要关闭Office就仅删除对象即可,不要调用Quit()方法,会直接关闭正在运行的Office程序)

方案2:遍历进程打开的文件句柄(通用方案,适用于所有程序)

依赖安装:

pip install psutil

示例代码:

import psutil

PID = 4464 # 替换为你的Office进程PID
p = psutil.Process(PID)
# 过滤Office文档后缀,同时排除~$开头的Office临时文件
target_suffix = (".docx", ".doc", ".xlsx", ".xls", ".pptx", ".ppt")
for file in p.open_files():
    if file.path.endswith(target_suffix) and "\\~$" not in file.path:
        print(f"打开的文档绝对路径:{file.path}")

说明:

  • 该方法为通用方案,不限于Office程序,可获取任意进程打开的文件路径
  • 需要以管理员权限运行Python脚本,否则无法读取其他进程的句柄信息
  • 存在小概率误判,若进程同时打开了多个同后缀文件需要自行根据业务逻辑筛选

内容的提问来源于stack exchange,提问作者ConciseVerbosity21

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.16 20:15:03