Handle是一个实用程序,它显示有关系统中任何进程的打开句柄的信息。您可以使用它来查看打开文件的程序,或查看程序所有句柄的对象类型和名称。
它基于 GUI 的版本是Process Explorer。
handle -p yourProcess.exe > log.txt
它将在日志文件中列出 yourProcess.exe 的所有句柄,现在使用批处理命令,您可以轻松地从 log.txt 中提取 yourProcess 的“当前工作目录”。
由 barlop 添加
这是从 c:\tinyweb\rrr 运行的进程 c:\tinyweb\tiny.exe 的输出..
C:\Users\user>handle -p tiny.exe
Nthandle v4.1 - Handle viewer
Copyright (C) 1997-2016 Mark Russinovich
Sysinternals - www.sysinternals.com
------------------------------------------------------------------------------
tiny.exe pid: 20668 compA\user
10: File C:\Windows
1C: File C:\tinyweb\rrr
9C: File C:\tinyweb\rrr\access_log
A0: File C:\tinyweb\rrr\agent_log
A4: File C:\tinyweb\rrr\error_log
A8: File C:\tinyweb\rrr\referer_log
E4: Section \Sessions\1\BaseNamedObjects\__wmhr_msgs_buffer_name$1e74
EC: File C:\Windows\winsxs\x86_microsoft.windows.common-controls_659
C:\Users\user>
如果您想专门解析它,那么您可以在纯 cmd.exe 中使用例如 for /f 或使用第三方脚本语言(如 ruby)或使用各种 *nix 样式命令行工具的 Windows 端口进行解析。此行使用此类工具并获取它(显然以下行需要 grep 和 sed,最好是它们的体面版本,例如来自 cygwin)
C:\Users\harvey>handle -p tiny.exe | grep "pid:" -A 3 | sed -n "3p" | grep -o ".:[\]\S*"
C:\tinyweb\rrr