Uruchom proces i zwróć jego PID (jako CHP.EXE) dla pliku wsadowego
6
Szukam czegoś takiego jak chp.exe, może uruchomić polecenie i zwrócić pid.
Nie mogę użyć CHP.EXE, ponieważ wydaje się, że został zgłoszony jako zainfekowany plik w niektórych programach antywirusowych.
Możesz uruchomić program i przeanalizować wynik tasklist.
Karan
Odpowiedzi:
4
Wmic process where (Name like '%CHP%') get caption, name, commandline, ProcessId | more
prawdziwa próbka:
Wmic process where (Name like '%ie%') get caption, name, commandline, ProcessId | more
Wydajność:
Wmic process get ProcessId
wyodrębnij tylko processId do zmiennej z wyniku zapytania:
ProcID.cmd:
@ECHO OFF
FOR /F %%T IN ('Wmic process where^(Name^="explorer.exe"^)get ProcessId^|more +1') DO (
SET /A ProcessId=%%T) &GOTO SkipLine
:SkipLine
echo ProcessId = %ProcessId%
Stamtąd można go używać jak obiektu, przechowując dane wyjściowe ( $notepad = Start-process notepad.exe -PassThru i wtedy $notepad.ID ) i dokończ wszystkie skrypty, które robiłeś.
Powrót do skryptu wsadowego (jeśli jest to absolutnie konieczne) jest trochę skomplikowany. Jeśli całkowicie utkniesz w używaniu pliku wsadowego, prawdopodobnie najłatwiej byłoby napisać skrypt PowerShell, który zapisuje odpowiednie informacje do pliku lub klucza rejestru, wywołać skrypt PowerShell z pliku wsadowego, a następnie przeczytać plik lub reg klucz później w skrypcie wsadowym.
Jeśli nie chcesz w ogóle dotykać PowerShell, będziesz musiał skorzystać z WMIC lub listy zadań, aby znaleźć proces po jego utworzeniu.
Inny sposób :: Możesz utworzyć plik wsadowy i umieścić następujący kod w pliku wsadowym. Najpierw uruchom komendę netstat, aby uzyskać processId dla portu 9797. Następnie ustaw ją na zmienną.
@ECHO OFF
FOR /F "tokens=5" %%T IN ('netstat -a -n -o ^| findstr "9797" ') DO (
SET /A ProcessId=%%T) &GOTO SkipLine
:SkipLine
echo ProcessId = %ProcessId%
PAUSE
tasklist
.Odpowiedzi:
prawdziwa próbka:
Wydajność:
wyodrębnij tylko processId do zmiennej z wyniku zapytania:
ProcID.cmd:
Wydajność:
źródło
Jest to całkiem proste w PowerShell.
Start-Process notepad.exe -PassThru
uruchomi Notatnik i wróci:Stamtąd można go używać jak obiektu, przechowując dane wyjściowe (
$notepad = Start-process notepad.exe -PassThru
i wtedy$notepad.ID
) i dokończ wszystkie skrypty, które robiłeś.Powrót do skryptu wsadowego (jeśli jest to absolutnie konieczne) jest trochę skomplikowany. Jeśli całkowicie utkniesz w używaniu pliku wsadowego, prawdopodobnie najłatwiej byłoby napisać skrypt PowerShell, który zapisuje odpowiednie informacje do pliku lub klucza rejestru, wywołać skrypt PowerShell z pliku wsadowego, a następnie przeczytać plik lub reg klucz później w skrypcie wsadowym.
Jeśli nie chcesz w ogóle dotykać PowerShell, będziesz musiał skorzystać z WMIC lub listy zadań, aby znaleźć proces po jego utworzeniu.
źródło
możesz uruchomić program, a następnie wydać to polecenie, zastępując je
firefox
z żądaną nazwą procesu:wyświetli pid tylko w moim przypadku wyjście jest
5540
źródło
Inny sposób :: Możesz utworzyć plik wsadowy i umieścić następujący kod w pliku wsadowym. Najpierw uruchom komendę netstat, aby uzyskać processId dla portu 9797. Następnie ustaw ją na zmienną.
źródło