Czy istnieje sposób uzyskania identyfikatora PID usługi systemu Windows za pomocą polecenia w skrypcie wsadowym po prostu znając nazwę usługi?Uzyskaj identyfikator PID usługi Windows pod nazwą usługi
Odpowiedz
Wypróbuj poniższy kod:
FOR /F "tokens=3" %%A IN ('sc queryex %serviceName% ^| findstr PID') DO (SET pid=%%A) IF "!pid!" NEQ "0" ( taskkill /F /PID !pid! )
Należy pamiętać, że wiele usług może korzystać z tego samego identyfikatora PID. Spróbuj "for/f" tokeny = 3 "% A w ('sc queryex w32time^| find" PID "') do usługi wmic, gdzie" ProcessID =% A "pobiera napis, nazwę, processid/value' z polecenia cmd. – rojo
OP nie prosi o kod do zabicia usługi, Z pewnością w takim przypadku wystarczy użyć programu sc.exe, aby go zatrzymać, a nie bezpośrednio zabić proces, który może obsługiwać wiele usług. Możesz również użyć czegoś takiego jak 'tasklist/svc/fi 'services eq% serviceName%"/fo list', aby uzyskać PID plus listę wszystkich usług obsługiwanych przez proces. – eryksun
Wygląda na to, że 'taskkill/F/PID! Pid!' Powinno być 'taskkill/F/PID% pid%' –
@echo off
for /f "tokens= delims=" %%# in ('
wmic service where "name='Service'" get ProcessId /format:value
') do (
for /f "tokens=* delims=" %%$ in ("%%#") do set "%%$"
)
taskkill /pid %ProcessId% /f
to nie działa dla Ciebie? http://stackoverflow.com/questions/17472903/how-to-get-the-dynamic-pid-of-a-windows-service-and-then-kill-it –
Nie tego nie chcę. Kod odnajdzie PID w pliku .exe, nie pod nazwą usługi. – ilce