Board logo

标题: [文本处理] 请教如何用批处理获得占用某个端口进程的PID并结束它! [打印本页]

作者: princes    时间: 2013-3-28 13:01     标题: 请教如何用批处理获得占用某个端口进程的PID并结束它!

本帖最后由 princes 于 2013-3-28 13:03 编辑

各位高手:
   
     我的一个程序需要用到某个端口,这个端口是一个标注规定的,不能更改,而且这个端口很少有程序使用到。通过命令知道是其中一个svchost进程占用了该端口,一结束该进程我的程序就可以用了,请问如何用批处理或者程序来获得占用该端口PID,并根据这个PID来结束这个进程?谢谢了!
作者: ShadowFiend    时间: 2013-3-28 13:25

  1. netstat -ano | findstr ":500\>"
复制代码
上面的500就是你的端口号
得到的结果最后一列的数字就是PID
作者: princes    时间: 2013-3-28 16:24

回复 2# ShadowFiend

谢谢你的回答,但是好像你没有理解我的问题哦。这个命令是可以知道并获得PID,但是怎么样再通过PID获得具体是哪个进程,并结束这个进程? 我说的是整个过程不用人工干涉哦。
作者: Demon    时间: 2013-3-28 16:56

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set port=49152
  4. for /f "tokens=1-5" %%a in ('netstat -ano ^| find ":%port%"') do (
  5.     if "%%e%" == "" (
  6.         set pid=%%d
  7.     ) else (
  8.         set pid=%%e
  9.     )
  10.     echo !pid!
  11.     taskkill /f /pid !pid!
  12. )
  13. pause
复制代码

作者: ShadowFiend    时间: 2013-3-28 17:46

本帖最后由 ShadowFiend 于 2013-3-28 17:48 编辑

答案见楼上
作者: princes    时间: 2013-4-1 18:49

回复 4# Demon

谢谢你的帮助,不过好像有点问题哦!运行你给的批处理,屏幕上只是出现 “按任意键继续”,没有其它的显示。PID等都没有看到显示。
作者: BAT-VBS    时间: 2013-4-1 20:47

回复 6# princes


    把@echo off删掉,把执行过程贴出来看看。




欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2