Как запросить netstat, чтобы найти PID для определенного локального адреса в Windows 7?
Я часто запускаю сервер по локальному адресу [::]:8080
, Для завершения сервера мне нужно PID
взято из netstat -aon
,
Чтобы прекратить этот сервер я делаю taskkill /F /PID <found pid>
Я хочу создать пакетный файл Windows, который может найти PID и применить его в вызове taskkill /F /PID <found pid>
Как я могу создать такой командный файл?
Спасибо!
2 ответа
Решение
На моем ПК может быть соединение UDP или TCP, и они требуют немного другой код:
Проверьте это, чтобы увидеть, если одна из команд taskkill выглядит правильно и удалите echo
включить команду taskkill.
@echo off
for /f "tokens=5" %%a in ('netstat -aon ^|find " [::]:8080 " ^|find /i " TCP " ') do echo taskkill /F /PID %%a
for /f "tokens=4" %%a in ('netstat -aon ^|find " [::]:8080 " ^|find /i " UDP " ') do echo taskkill /F /PID %%a
@echo off
setlocal enableextensions
set "port=8080"
for /f "tokens=1,4,5" %%a in (
'netstat -aon ^| findstr /r /c:"[TU][CD]P[^[]*\[::\]:%port%"'
) do if "%%a"=="UDP" (taskkill /F /PID %%b) else (taskkill /f /PID %%c)
endlocal
использование findstr
чтобы получить только необходимую запись, токенизируйте ее, используя for
команда, чтобы получить столбец PID (4-й для UDP, 5-й для TCP) и убить задачу