[提问帖] 如何提取占用端口的程序的PID号作为返回值
bat吧
全部回复
仅看楼主
level 3
wang6771264 楼主
前段时间,tomcat发布Web程序,老是端口占用,每次用netstat -aon|findstr "8088" //查看该端口被那个进程占用,一般返回PID号
tasklist|findstr+进程PID号 //查看该进程属于哪个应用
taskkill /f /t /im 进程名
三部曲完成,后来直接写了个taskkill /f /t /im 进程名解决了,当时没有深入,今天刚好没事希望找人探讨一下,根据输入的端口号来杀死进程!vbs也可以,不过我更希望用bat来实现这个,求大神告知bat中命令返回值的问题!
2015年12月30日 07点12分 1
level 13
没上机不知道能不能行得通……用管道命令把pid保存在txt里,随后读取。后面操作相同。
2015年12月31日 03点12分 2
level 3
wang6771264 楼主
已经做出来了,不过感觉有点累赘,我用bat的for循环实现这个问题,下面贴出代码,不过我很想问,vbs如何实现,正在研究,有大神给点指点,顺便推荐点书籍看下好吗?
2015年12月31日 06点12分 3
level 3
wang6771264 楼主
@echo off
color 0e
title 进程处理
echo 请输入端口号:
set /p input=
::此处bug返回行数为多行时如何取到正确行
netstat -aon| findstr %input% >null
set "err=%errorlevel%"
if %err% equ 0 (goto 1) else (goto 0)
:0
echo 端口号输入有误
goto c
:1
FOR /F "tokens=5" %%i IN ('netstat -aon^| findstr %input%') DO set pid=%%i
echo %pid%
FOR /F "tokens=1" %%i IN ('tasklist^|findstr %pid%') DO set pro=%%i
echo %pro%
echo Killing Proccess...
taskkill /f /t /im %pro%
echo Finshed...
goto c
:c
echo 程序结束...
pause
2015年12月31日 06点12分 4
这是我写的,感觉有点臃肿!不知道哪里不对!如果大家要测试的话,注意空格,和某些转义字符!
2015年12月31日 06点12分
level 3
wang6771264 楼主
现在求大神能给我一点用vbs写此功能的提示!
2015年12月31日 06点12分 5
level 3
wang6771264 楼主
我晕这么久了,都没人回的。。。,果然是我太渣吗?
2016年01月04日 02点01分 6
level 1
感谢楼主,我正遇到这个问题,但因为没入学习过bat,所以百度自学,但也只能做到先查看pid命令,然后再手动输入对应的pid,再kill掉8080端口的进程。楼主写的这个帮了我的大忙
2017年09月11日 11点09分 7
level 1
@echo off
set port=50001
for /f "tokens=1-5" %%i in ('netstat -ano^|findstr ":%port%"') do
taskkill /pid %%m
2018年08月17日 06点08分 8
1