[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[网络连接] 批处理BAT如何检测端口是否ESTABLISHED(连接)?

本帖最后由 咒夜坠 于 2014-2-14 11:17 编辑
  1. @echo off&setlocal enabledelayedexpansion
  2. set /p sc=请输入要监看的端口
  3. set ss=ESTABLISHED
  4. for /f "eol=: tokens=1,2,3,4" %%i in ('netstat -an^|find "%sc%"') do (
  5. if %ss% EQU %%l (
  6. echo %%i %%j %%k %%l %date% %time% >>log.txt
  7. ) ELSE (
  8. ECHO 无连接
  9. )
  10. ) echo %%i %%j %%k %%l
复制代码
判断某端口是否连接 连接就输出到文本log


代码二
下面这个代码是我改良后的
但是最后还是会提示
'TCP' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
  1. echo off&setlocal enabledelayedexpansion
  2. ::批处理文件 请将文件名改成.bat后缀
  3. set /p sc=请输入要监看的端口
  4. for /f "delims=" %%a in ('netstat -an^|find "ESTABLISHED"') do echo %%a
  5. for /f "eol=: tokens=1,2,3,4" %%i in ('netstat -an^|find "ESTABLISHED"') do (
  6. set ss=%%i %%j %%k %%l
  7. echo %ss%|find "%sc%"
  8. )
  9. pause
复制代码
代码三 功能完善 使用转换软件就可以不显示窗口了
  1. echo off&setlocal enabledelayedexpansion
  2. ::批处理文件 请将文件名改成.bat后缀
  3. set /p sc=请输入要监看的端口
  4. :dk
  5. for /f "eol=: tokens=1,2,3,4" %%i in ('netstat -an^|find "ESTABLISHED"') do (
  6. echo %date% %time% %%i %%j %%k %%l|find "%sc%">>log.txt
  7. )
  8. ping 127.1>nul
  9. goto dk
复制代码

报错信息是什么?

TOP

回复 2# DAIC


    此时不应有 echo。
应该是最后一个ceho那个错了
我改进了之后没有报错但不输出
  1.     @echo off&setlocal enabledelayedexpansion
  2.     set /p sc=请输入要监看的端口
  3.     set ss=ESTABLISHED
  4.     for /f "eol=: tokens=1,2,3,4" %%i in ('netstat -an^|find "%sc%"') do (
  5.                     if %ss% EQU %%l (
  6.                             echo %%i %%j %%k %%l %date% %time% >>log.txt
  7.                     ) ELSE (
  8.                             ECHO 无连接
  9.     )
  10.     )
复制代码

TOP

你测试的是哪个端口?
直接执行这个命令有结果吗?
netstat -an | find "你要测试的端口"

TOP

回复 4# DAIC


    随便填写一个端口 为了测试方便我一般填80端口

TOP

回复 5# 咒夜坠


    我测试了3楼的代码,没有发现问题。你检查一下.bat文件是不是ANSI编码。

TOP

回复 6# DAIC


    最后是测试通过了
但是不知道如果检测到ESTABLISHED要怎么触发,另外的操作

TOP

回复 7# 咒夜坠


    需要触发什么操作?

TOP

返回列表