BAT之基于端口结束进程

1、查看端口对应PID命令为
#8080端口举例

netstat -ano | findstr "8080"

2、结束进程命令为

taskkill /?
/S    system           指定要连接的远程系统。
/U    [domain\]user    指定应该在哪个用户上下文执行这个命令。
/P    [password]       为提供的用户上下文指定密码。如果忽略,提示
                       输入。
/FI   filter           应用筛选器以选择一组任务。
                       允许使用 "*"。例如,映像名称 eq acme*
/PID  processid        指定要终止的进程的 PID。
                       使用 TaskList 取得 PID。
/IM   imagename        指定要终止的进程的映像名称。通配符 '*'可用来
                       指定所有任务或映像名称。
/T                     终止指定的进程和由它启用的子进程。
/F                     指定强制终止进程。
/?                     显示帮助消息。

可见taskkill命令结束进程,并不符合预期效果,一般情况下,用户通常只会以进程名(.exe)或端口号(port)结束进程,很少有PID结束进程的场景,如:
1、结束QQ等明确名称的进程时,使用进程名
2、APAHCE2执行期间,端口被占用,这类不确定进程名的应用,则使用端口号

taskkill支持#1,那么编写的bat文件只要支持#2的方式就行了,既然通过port结束进程,就必须得到port号。
基于CMD的for命令对字符串剪切参数tokens,得如下命令

for /f "tokens=5" %%a in ('netstat -ano ^| findstr "8080"') do echo %%a

得到a的值就是单纯的port对应的PID,基于此方法,将echo命令修改为taskkill命令,即可完成通过端口结束进程的操作,如下:

for /f "tokens=5" %%a in ('netstat -ano ^| findstr "8080"') do taskkill /pid %%a -t -f 
pasue
:pause可删除,保留可以查看具体执行结果,建议保留或使用“>”将结果保留。

提示:直接使用CMD窗口执行命令出现无法使用的情况,需要将^,%等字符删除再使用,此为CMD和BAT的区别,是正常现象。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值