为什么我要问的是我的程序使用的第三方软件有时会留下孤立的进程,这些进程没有链接回我的程序或第三方进程.随着时间的推移,这些孤儿进程开始累积并消耗大量资源.我想定期杀掉它们,但为了让我这样做,我需要确定它们是由我的程序而不是其他程序创建的.我查看了Process Explorer中的孤立进程,当查看进程的属性时,我看到一个名为“Current Directory”的字段.孤立进程的当前目录是我的程序的安装目录.这会让我放心,我正在杀死我的程序创建的进程.
由于这些进程是由第三方创建的,因此我需要在创建它们之后通过对它们运行taskkill来杀死它们.有没有办法在批处理文件中使用开箱即用的Windows命令来确定进程的当前工作目录?如果这可以通过最好的wmic查询来完成,但是在使用wmic时我似乎无法找到当前的工作目录.我假设如果Process Explorer能够获得此信息,我应该能够通过一些批处理命令获得它.
tlist从
WDK到救援!其输出的第二行(“CWD:…”)显示进程的工作目录:
> tlist 944 944 postgres.exe CWD: D:\Lab\Database\pgsql\test\ CmdLine: "D:/Tools/pgsql/bin/postgres.exe" -D "." VirtualSize: 221116 KB PeakVirtualSize: 242620 KB WorkingSetSize: 17076 KB PeakWorkingSetSize: 19336 KB NumberOfThreads: 4 9084 Win32StartAddr:0x00000000 LastErr:0x00000000 State:Waiting 8504 Win32StartAddr:0x00000000 LastErr:0x000000b7 State:Waiting 8616 Win32StartAddr:0x00000000 LastErr:0x00000000 State:Waiting 7468 Win32StartAddr:0x00000000 LastErr:0x00000000 State:Waiting 9.3.5.14202 shp 0x0000000000400000 D:\Tools\pgsql\bin\postgres.exe 6.1.7601.18247 shp 0x00000000770D0000 C:\Windows\SYSTEM32\ntdll.dll ...
有关详细信息,请参阅the doc.