2013-06-30 3 views
1

У меня есть 4 .bat-файла в папке автозапуска Windows для запуска программ Sabnzbd, CouchPotato, SickBeard и наушников вместе с Windows. В этих пакетных файлах я запускаю файл .py Python через строку:Отказывать запущенные программы pythonw через cmd start

start "SABnzbd" pythonw "C:\SABnzbd\SABnzbd.py" 

После запуска все 4 программы и работаю, я могу видеть их в диспетчере задач. Однако я не могу идентифицировать отдельные процессы. Они идентифицируют себя как pythonw.exe *32 с описанием pythonw.exe:

enter image description here

То, что я пытаюсь сделать, это идентифицировать каждую программу. У вас есть идеи, как это сделать? Можно ли это сделать, добавив параметр в файл bat? Или я должен делать что-то совершенно другое?

ответ

0

Я просто решил это сам.

Я был глуп, я узнал, что могу добавить столбцы на вкладку процессов в диспетчере задач. Один из доступных столбцов - Command line, и этот столбец показывает, что именно я помещал в .bat-файлы, включая путь, и путь показывает, какая программа является процессом.

Из ответа @Ansgar Wiechers' Я искал, чтобы показать командную строку

0

Вы можете использовать tasklist и фильтровать вывод получить все технологические идентификаторы (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 = processes('pythonw.exe') # <-- the name must be exact 
3

Я бы предлагают использовать питона 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 
+0

Я извиняюсь за поздний ответ, я был занят и забыл этот вопрос .. Как бы я получить эту работу? Я сохранил его в файле .py, но экран командной строки просто мигает. – Dediqated

+0

Запустите командную строку и запустите сценарий Python. –

+0

... и не забудьте запустить его с помощью pythonw. 8-) – mojo

0

Использование Pyins выше, чтобы заморозить файл сценариев python в файл exe.

Затем вы можете идентифицировать эти процессы, указав им другое имя файла exe. например Sabnzbd.exe, CouchPotato.exe и т.д.

Более того, интерпретатор питона не требуется устанавливать на компьютере клиента, так как вы предоставите ех файл

+0

Это не работает для меня, так как эти программы обновляются через git – Dediqated

0

В пакете, вы можете получить доступ к WMI с помощью wmic.exe (консоли WMI)

wmic Path Win32_Process where Name='pythonw.exe' get ProcessId,CommandLine 

Первый цитируемый аргумент start устанавливает встроенные команды заголовка окна. Возможности графического интерфейса недоступны, глядя на процессы. Есть API Win32, которые это делают (для этой цели мы используем AutoIt), но изначально я не знаю, насколько это просто.

Смежные вопросы