Board logo

标题: [系统相关] 请教批处理, 当某端口被占用时, 启动记事本 [打印本页]

作者: 5i365    时间: 2021-10-29 17:03     标题: 请教批处理, 当某端口被占用时, 启动记事本

当8010端口被占用时, 启动记事本
下面的代码, 有一部分不会写, 请求高手支招, 提前感谢
-------------------------------------------------------------
8010端口没占用时,有两种情况, 一种是显示为空,取不到值,另一种情况是显示类似下面的信息, 最后那列为0, 不包含 LISTENING 单词
C:\Users\Administrator>netstat -aon|findstr "8010"
  TCP    [::1]:50055            [::1]:8010             TIME_WAIT       0
  TCP    [::1]:50056            [::1]:8010             TIME_WAIT       0
  TCP    [::1]:50058            [::1]:8010             TIME_WAIT       0
  TCP    [::1]:50059            [::1]:8010             TIME_WAIT       0
  TCP    [::1]:50060            [::1]:8010             TIME_WAIT       0
  TCP    [::1]:50061            [::1]:8010             TIME_WAIT       0
-----------------------------------------------------------------------------------------
8010端口被占用时,显示下面的信息, 最后那列有非0的值, 包含 LISTENING 单词
C:\Users\Administrator>netstat -aon|findstr "8010"
  TCP    0.0.0.0:8010           0.0.0.0:0              LISTENING       7268
  TCP    [::]:8010              [::]:0                 LISTENING       7268
  TCP    [::1]:8010             [::1]:50156            FIN_WAIT_2      7268
  TCP    [::1]:8010             [::1]:50157            FIN_WAIT_2      7268
  TCP    [::1]:8010             [::1]:50159            ESTABLISHED     7268
  TCP    [::1]:8010             [::1]:50160            ESTABLISHED     7268
  TCP    [::1]:8010             [::1]:50161            ESTABLISHED     7268
  TCP    [::1]:8010             [::1]:50162            ESTABLISHED     7268
  TCP    [::1]:50156            [::1]:8010             CLOSE_WAIT      8932
  TCP    [::1]:50157            [::1]:8010             CLOSE_WAIT      8932
  TCP    [::1]:50159            [::1]:8010             ESTABLISHED     8932
  TCP    [::1]:50160            [::1]:8010             ESTABLISHED     8932
  TCP    [::1]:50161            [::1]:8010             ESTABLISHED     8932
  TCP    [::1]:50162            [::1]:8010             ESTABLISHED     8932
  1. @echo off
  2. set status=false
  3. :checkstatus
  4. for /f "delims=" %%i in ('netstat -aon^|findstr "8010"') do (
  5. if "%%i" 包含LISTENING单词 (set status=true)
  6. )
  7. if "%status%"=="true" (
  8. start notepad
  9. ) else (
  10. ping -n 5 127.0.0.1>nul
  11. goto :checkstatus
  12.   
  13. )
复制代码

作者: lancer    时间: 2021-10-29 18:54

用call命令,call命令会在执行完毕调用的命令后返回到程序位置继续执行。
作者: 5i365    时间: 2021-10-29 19:52

回复 2# lancer


    不灵, 执行到hexo s时, 就不动了
作者: lancer    时间: 2021-10-30 09:07

回复 3# 5i365


    这个命令是干啥的,dos中不带这个命令吧,你单独执行此命令,看结果是什么
作者: 5i365    时间: 2021-10-30 10:16

回复 4# lancer


    改了一下问题, 就差一行代码了
作者: idwma    时间: 2021-10-30 14:31

  1. @echo off
  2. set status=false
  3. :checkstatus
  4. for /f "tokens=4 delims= " %%i in ('netstat -aon^|findstr "8010"') do (
  5. if "%%i"=="LISTENING" (set status=true)
  6. )
  7. if "%status%"=="true" (
  8. start notepad
  9. ) else (
  10. ping -n 5 127.0.0.1>nul
  11. goto :checkstatus
  12.   
  13. )
复制代码





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