标题: [网络连接] 批处理命令netstat -ano如何判断8001和8002端口? [打印本页]
作者: batbat123 时间: 2012-6-2 21:53 标题: 批处理命令netstat -ano如何判断8001和8002端口?
以下2个判断问题,,,求教
命令netstat -ano判断8001和8002端口
8001和8002两个端口均不存在跳转goto ouz 执行指定的命令
8001和8002任意存在其中一个端口 跳转goto ouq执行指定的命令
8001和8002两个端口都存在跳转goto oua执行指定的命令
判断 以netstat -ano命令判断 8001和8002端口
8001和8002都均存在 跳转执行下步命令5
8001和8002只存在一个另外1个不存在或者1个都不存在 跳转goto qqw执行命令
:qqw
xxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxx
作者: apang 时间: 2012-6-2 23:17
- @echo off
- for %%a in (8001 8002) do (
- netstat -ano|findstr "%%a">nul && set "v%%a=1" || set "v%%a=0"
- )
- if "%v8001%"=="1" (
- if "%v8002%"=="1" (goto :oua) else goto :ouq
- ) else (
- if "%v8002%"=="1" (goto :ouq) else goto :ouz
- )
-
- :oua
- echo 端口全部存在&pause&goto :eof
- :ouq
- echo 仅存在一个端口&pause&goto :eof
- :ouz
- echo 端口都不存在&pause
复制代码
作者: apang 时间: 2012-6-2 23:20
跳转执行下步命令5 是啥意思?- @echo off
- for %%a in (8001 8002) do (
- netstat -ano|findstr "%%a">nul && set "v%%a=1" || set "v%%a=0"
- )
- set/a "ALL=v8001 + v8002"
- if "%ALL%"=="2" (goto :5) else goto :qqw
-
- :5
- echo 端口全部存在&pause&goto :eof
- :qqw
- echo 最多存在一个端口&pause&goto :eof
复制代码
作者: neorobin 时间: 2012-6-3 10:28
本帖最后由 neorobin 于 2012-6-3 10:41 编辑
在前帖中, 之前给楼主的回复都是仓促地, 未经测试给出的代码, 在此表示歉意.
后在 11 楼给出的回复是认真测试过的, 而楼主未给出任何回应, 又另开此帖.
这里, 我再重复给出那段代码, 楼主若仍不愿回应, 我只能认为楼主缺乏作为一个求助者应有的礼貌.
1. 楼主此帖所述其实就是要求判断是否 两个端口 都找到了, 都找到了, 如何; 否则又如何.
2. netstat -ano 中参数 -o 会 "显示与每个连接相关的所属进程 ID",
如果该进程 ID 数字串恰好和某一个端口号相同 或者 包含 端口号数字串, 比如: PID 为 8001, 80023 等
而相关的连接却 并非 相应端口, 判断将可能 受到干扰 或者 出错. 所以用 netstat -an 更好.
下面代码中只是给出了各种情形的相关判断, 至于判断后做什么, 简单修改即可, 相信楼主可以解决.
第 11, 12 行代码只是将 没有 找到所有端口 的情形又细分判断处理了,
不需要如此细分的话, 简单的以一个相应的处理代码替换即可.- @echo off & setlocal enabledelayedexpansion
- set "Ports=8001 8002"
- for %%a in (%Ports% Any) do set "found%%a=0"
- set "foundAll=1"
- for /f "tokens=3,5 delims=: " %%a in ('netstat -an') do (
- set /a "found%%a=1,found%%b=1"
- )
-
- for %%a in (%Ports%) do set /a "foundAll&=found%%a, foundAny|=found%%a"
- if "!foundAll!"=="1" (echo,找到全部端口) else (
- for %%a in (%Ports%) do if "!found%%a!"=="1" (echo,找到端口 %%a) else (echo,未找到端口 %%a)
- if "!foundAny!"=="0" (echo,未找到任何端口) else (echo,找到至少一个端口)
- )
- pause
复制代码
作者: gawk 时间: 2012-6-3 10:37
一般来说出钱请人写代码的都是不太懂的
作者: 咒夜坠 时间: 2014-2-13 15:12
回复 4# neorobin
大神的代码好深奥啊
3,4行里面的 set "found%%a=0"
set "foundAll=1"是神马意思
还有后面的SET
被你的set 用法搞昏了。。。
好强大的用法
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |