|
发表于 2022-5-1 03:17:31
|
显示全部楼层
::关闭回显,启用变量延迟扩展
@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 |
|