Когда мы запускаем Apache в Windows, машина httpd.exe запускает свой процесс.
Теперь мы можем определить, запущен ли процесс httpd.exe или нет, используя эту команду:

query process httpd.exe

Это вернет что-то вроде этого:

 USERNAME        SESSIONNAME      ID    PID    IMAGE
 >system         services         0    3340   httpd.exe
 >system         services         0    4720   httpd.exe

Теперь можно ли узнать местоположение httpd.exe с помощью команды windows в cmd?
Команда должна вернуть это (расположение httpd.exe):

E:\Installed Softwares\wamp\bin\apache\apache2.4.9\bin\httpd.exe

2 ответа2

1

Вы можете сделать это с помощью WMI.
Нам нужно создать WQL-запрос для процессов, которые называются httpd.exe, и мы хотим получить путь, по которому был запущен исполняемый файл.
Эта информация хранится в классе Win32_Process , и документация показывает нам, какие биты информации нам нужно предоставить (например, Name) и какие биты запрашивать (например, ExecutablePath).

Мы можем использовать wmic.exe для запроса WMI следующим образом:

wmic process WHERE name="httpd.exe" GET ExecutablePath  

Это должно вывести что-то похожее на:

C:\Apps\httpd.exe
C:\Apps\httpd.exe
C:\Apps\beta-test\httpd.exe  

Возможно, вы захотите получить CommandLine вместо ExecutablePath, поскольку это также скажет вам, с какими аргументами командной строки запущен процесс, и это может иметь большое значение, когда вы сужаете, какие процессы что делают:

wmic process WHERE name="httpd.exe" GET CommandLine  

Это должно показать вам что-то вроде:

C:\Apps\httpd.exe -config=E:\widgetsales\httpd.conf
C:\Apps\httpd.exe -config=E:\widgetservices\httpd.conf
C:\Apps\beta-test\httpd.exe -config=D:\DevStuff\httpd.conf  

Мы можем сделать еще лучше, получив PID, а также командную строку:

wmic process WHERE name="httpd.exe" GET CommandLine, ProcessID 

CommandLine                                                    ProcessId
C:\Apps\httpd.exe -config=E:\widgetsales\httpd.conf            51064
C:\Apps\httpd.exe -config=E:\widgetservices\httpd.conf         24716
C:\Apps\beta-test\httpd.exe -config=D:\DevStuff\httpd.conf     52728  
1

Я не уверен, что я вас понял, но если вы хотите найти файл в CMD, вы можете использовать где comand (он ищет только в текущем каталоге и в пути), но вы можете указать некоторые параметры. Например, если я ищу java.exe

Microsoft Windows [Version 6.0.6002]
Copyright (c) 2006 Microsoft Corporation.  All rights reserved.

C:\Users\Administrator>where java.exe
C:\Windows\System32\java.exe
C:\Program Files\Java\jdk1.6.0_26\bin\java.exe

редактировать: вы должны попытаться найти рекурсивный поиск, и он даст вам местоположение, но это сработало для меня, только если файл был в том же разделе.

C:\Users\Administrator>where /r c:\ thunderbird.exe
c:\Program Files\Mozilla Thunderbird\thunderbird.exe

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .