|
发表于 2019-11-3 15:03:53
|
显示全部楼层
建个bat文件,复制下面打代码
- ::关闭回显,启用变量延迟扩展
- @echo off&setlocal enabledelayedexpansion
- ::切换到临时目录
- cd /d %temp%
- ::查找80端口的侦听信息,写入到80.tmp文件
- netstat -ano|find ":80 "|find "LISTENING">80.tmp
- ::如果未发现占用80端口,停止脚本
- if ERRORLEVEL 1 goto :exit
- ::逐行读取80.tmp文件,按空格分割当前行,取分割后第5段(取得PID)
- for /f "tokens=5 delims= " %%i in (80.tmp) do (
- echo.
- echo %%i 进程占用了80端口,进程信息:
- ::显示进程信息
- tasklist /fi "pid eq %%i"
-
- ::在进程信息中查找带"exe"的行写入到task.tmp
- tasklist /fi "pid eq %%i"|find "exe">task.tmp
-
- ::逐行读取task.tmp,按空格分割当前行,取分割后的第1段(取得进程名)
- for /f "tokens=1 delims= " %%j in (task.tmp) do (
-
- echo.
- echo 尝试结束该进程...
-
- ::按名称结束进程(按pid无法结束同名多进程)
- taskkill /f /im %%j
- )
- )
- ::清理生成的临时文件
- del 80.tmp
- del task.tmp
- ::再次查找80端口的侦听信息
- netstat -ano|find ":80 "|find "LISTENING">nul
- ::如果未发现占用80端口,停止脚本
- if ERRORLEVEL 1 goto :exit2
- ::以上是进程占用80端口。System占用80端口可能是开启了,http服务,3w发布服务,SQL报表服务,sql分析服务,
- ::结束http服务
- net stop /y http
- ::禁用http服务
- sc config http start= disabled
- ::3w发布服务
- net stop /y w3svc
- sc config w3svc start= disabled
- ::SQL报表服务
- net stop /y reportserver
- sc config reportserver start= disabled
- ::sql分析服务
- net stop /y MSSQLServerOLAPService
- sc config MSSQLServerOLAPService start= disabled
- ::延迟5秒
- ping -n 5 ::1>nul 2>nul
- ::清屏
- cls
- echo.
- echo 完成
- echo.
- echo 正在退出...
- ping -n 3 ::1>nul 2>nul
- exit
- :exit
- ::差点忘了清理生成的临时文件
- del 80.tmp
- echo.
- echo 80端口好像没有被占用 ^>_^<
- echo.
- echo 正在退出...
- ping -n 4 ::1>nul 2>nul
- exit
- :exit2
- cls
- echo.
- echo 好像已经解决了80端口占用
- echo.
- echo 正在退出...
- ping -n 4 ::1>nul 2>nul
- exit
复制代码 |
|