#batch-file
Вопрос:
Я использую этот пакетный файл для поиска имен процессов по их значениям PID:
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET /a pid=4792
FOR /f "skip=3delims=" %%a IN ('tasklist') DO (
SET "found=%%a"
SET /a foundpid=!found:~26,8!
IF %pid%==!foundpid! echo found %pid%=!found:~0,24%!
)
GOTO :EOF
В ответ я вижу этот вывод:
root@root: C:UsersrootDesktopPIDf.bat
found 3276=svchost.exe
root@root: C:UsersrootDesktopPIDf.bat
found 4792=svchost.exe
Разве один процесс никогда не должен иметь более одного PID?
Я что-то здесь упускаю?
Комментарии:
1. Уникальны только PID -коды. Для данного исполняемого файла может существовать несколько процессов , таких как
svchost.exe
, и все эти процессы сообщают свое имя как имя базового исполняемого файла.2. СОВЕТ:
FOR /F "TOKENS=1,2 DELIMS=," %%G IN ('tasklist /NH /FO CSV') DO
Это присвоит имя изображения %%G, а PID — %%H.3. Вы даже можете продвинуть
TASKLIST
команду немного дальше, чтобы перечислить толькоPID
то, что вам нужно.tasklist /NH /FO CSV /FI "PID eq 4792"
.
Ответ №1:
Процесс может быть запущен несколько раз и, следовательно, появится в диспетчере задач или здесь с помощью вашего сценария с разными идентификаторами процессов.
Так что это совершенно справедливо.
На самом деле, SVCHOST.exe используется для запуска всех видов служб Windows, поскольку он действует как хост (подсказка в названии!).