Board logo

标题: [文本处理] 怎样批处理判断某端口的状态? [打印本页]

作者: lrk    时间: 2009-6-29 12:31     标题: 怎样批处理判断某端口的状态?

我想用批处理判断某端口的状态,具体说是这样,首先我通过netstat -an可以行到当前网络连接表,例如这里
  1. C:\Documents and Settings\Administrator>netstat -an
  2. Active Connections
  3.   Proto  Local Address          Foreign Address        State
  4.   TCP    0.0.0.0:135            0.0.0.0:0              LISTENING
  5.   TCP    0.0.0.0:445            0.0.0.0:0              LISTENING
  6.   TCP    0.0.0.0:1025           0.0.0.0:0              LISTENING
  7.   TCP    0.0.0.0:3389           0.0.0.0:0              LISTENING
  8.   TCP    10.104.150.74:139      0.0.0.0:0              LISTENING
  9.   TCP    10.104.150.74:1776     174.36.30.67:443       CLOSE_WAIT
  10.   TCP    10.104.150.74:1778     75.101.149.195:443     CLOSE_WAIT
  11.   TCP    10.104.150.74:1780     208.43.202.2:80        ESTABLISHED
  12.   TCP    10.104.150.74:1782     174.36.30.66:443       CLOSE_WAIT
  13.   TCP    10.104.150.74:1924     174.36.30.66:443       ESTABLISHED
  14.   TCP    10.104.150.74:1925     75.101.139.43:443      ESTABLISHED
复制代码


我想判断远程端口443的几个状态是否有ESTABLISHED的,如果有就循环判断,直到没有ESTABLISHED为止,我大概知道是用findstr和if来处理,但具体怎样写不会了,有大大可以指导下吗?
作者: lrk    时间: 2009-6-29 15:37

经过面论坛一番爬贴,终于自行解决了,参考代码如下:

:isExist
for /f "tokens=3 delims=:" %%i in ('netstat -an^|find ":443"') do (
echo "%%i"^|findstr /i "ESTABLISHED"
if %ERRORLEVEL% EQU 0 goto isExist
)

作者: pusofalse    时间: 2009-6-30 08:50

鼓励楼主的学习精神!
代码中有一处BUG,在代码头部加SetLocal enabledelayedexpansion 并把%errorlevel% 改为!errorlevel!,至于原因请参考以下:
批处理变量延迟扩展




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