本帖最后由 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
复制代码
|