Как Вы проверили бы, существует ли сервис WIN32 и, если так, сделайте некоторую операцию?
Что ж, я (почти) уверен, что без использование суперглобальных ключей $ _ SERVER
, обеспечивающих альтернативный способ определения PATH_INFO
, просто невозможно, поскольку позволяет сначала перечислить все ключи $ _SERVER ], что мы можем , возможно, использовать:
Очевидно, нам нужно игнорировать последние два. Теперь мы должны ( Я не знаю этого, я просто предполагаю, потому что вы так сказали ) отфильтровать все ключи, которые существуют в предоставленной вами ссылке (, которая, кстати, является автономным банкоматом ), что оставляет нам следующие ключи:
По поводу вашего комментария к Ответ Антониса :
Теперь вы просто жонглируете переменными.
SCRIPT_FILENAME
является частью CGI спец. Он не будет доступен, еслиPATH_INFO
недоступен. Что касаетсяREQUEST_URI
, это mod_rewrite apache конкретный. - LiraNuna
Я использую LightTPD / 1.4.20-1 (Win32) с PHP 5.3.0 как CGI, cgi.fix_pathinfo = 1
и $ _ SERVER ['REQUEST_URI ']
очень доступен для меня , я также помню, как использовал ту же самую переменную в те дни, когда никто не использовал mod_rewrite
, поэтому мое честное скромное предположение заключается в том, что вы простой ошибся в этом пункте . Что касается ключа SCRIPT_FILENAME
, я не могу проверить этот банкомат. Тем не менее, если мы очень сильно закроем глаза и поверим, что вы правы, у нас останется только одна переменная:
I ' Something like the following would check if a service was running, and if so stop it. You can then start it without worrying about if it was already running or not:
net start | find "SomeService"
if ERRORLEVEL 1 net stop "SomeService"
net start "SomeService"
If you're using findstr to do a search, as some of the other answers have suggested, then you would check for ERRORLEVEL equal to 0 (zero)... if it is then you have found the string you're looking for:
net start | findstr "SomeService"
if ERRORLEVEL 0 net stop "SomeService"
net start "SomeService"
Essentially most DOS commands will set ERRORLEVEL, allowing you to check if something like a find has succeeded.
Как насчет использования WMIC
:
Сначала перечислите все процессы, затем введите имя вашего процесса с помощью команды grep. Если он не существует, результат не будет напечатан.
wmic service |findstr "ProcessName"
Пример:
C:\>wmic service |findstr "Search"
FALSE TRUE Windows Search
Вы можете Не делайте этого в DOS, поскольку DOS не является Windows и даже не имеет понятия «служба».
В пакетном файле Windows вы можете использовать команду sc
для поиска служб:
sc query | findstr SERVICE_NAME
Это перечислит все службы и выдаст их соответствующие имена.
Вы можете найти конкретную службу с помощью
sc query | findstr /C:"SERVICE_NAME: myservice"
Помните, что этот поиск чувствителен к регистру. Вы можете добавить переключатель / I
в findstr
, чтобы этого избежать.