我在Windows自动启动文件夹中有4个.bat文件,用于启动程序Sabnzbd,CouchPotato,SickBeard和Headphones以及Windows。在这些批处理文件中,我通过以下行运行Python .py文件:
start "SABnzbd" pythonw "C:\SABnzbd\SABnzbd.py"
在所有4个程序启动并运行后,我可以在WIndows任务管理器中看到它们。但是,我无法确定单独的流程。它们都标识为pythonw.exe *32
,其描述为pythonw.exe
:
我要做的是确定每个程序。你知道怎么做吗?可以通过在bat文件中添加参数来完成吗?或者我应该做一些完全不同的事情?
答案 0 :(得分:3)
我建议使用python的WMI package(参见this answer):
import wmi
c = wmi.WMI ()
for process in [p for p in c.Win32_Process () if p.Name == 'pythonw.exe']:
print process.ProcessId, process.CommandLine
答案 1 :(得分:0)
您可以使用tasklist
并过滤输出以获取与给定名称相关的所有流程ID(PID):
import os
def processes(name):
os.system('tasklist /FI "IMAGENAME eq %s" > tmp.txt' % name)
tmp = open('tmp.txt', 'r')
return [int(i.split()[1]) for i in tmp.readlines()[3:]]
然后你可以使用pids:
pids = processes('pythonw.exe') # <-- the name must be exact
答案 2 :(得分:0)
使用Pyinstaller将python脚本文件冻结到exe文件中。
然后,您可以通过为它们提供不同的exe文件名来识别这些进程。例如Sabnzbd.exe,CouchPotato.exe等
此外,由于您提供了exe文件,因此不需要在客户端计算机上安装python解释器
答案 3 :(得分:0)
批处理时,您可以通过wmic.exe(WMI控制台)访问WMI
wmic Path Win32_Process where Name='pythonw.exe' get ProcessId,CommandLine
start
内置的第一个引用参数设置窗口标题。通过查看流程无法轻松访问GUI功能。有Win32 API可以做到这一点(我们为此目的使用AutoIt),但在本地,我不知道它有多容易。
答案 4 :(得分:0)
我自己就解决了。
我一直都很愚蠢,我发现我可以将colums添加到任务管理器的进程选项卡中。可用的列之一是Command line
,该列显示了我放在.bat文件中的确切内容,包括路径,路径显示了该过程的程序。
由于@Ansgar Wiechers的回答,我一直在寻找显示命令行