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支持#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的区别,是正常现象。

经验分享 程序员 微信小程序 职场和发展