志艺风云发表于: 2008-03-13 02:11
- @echo off
- title 网络邻居连通测试
- ::自动获取IP地址前段
- for /f "tokens=2 delims=:" %%i in ('ipconfig^|find /i "IP Address"') do (set ip=%%i)
- set ip=%ip:~1%
- echo %ip% >nul
- for /F "usebackq tokens=2,3,4 delims=. " %%i in ('echo %ip%') do (set ip=%%i.%%j.%%k)
- ::set ip=192.168.1
- ::IP地址前段,如果手工设定则去掉上行前面的 ::
- set ip1=1
- ::起始数
- set ip2=10
- ::结束数
- set ip4=
- ::测试完成默认值,留空时不会按回车键太快
- set ip5=y
- ::清空原有记录默认值
- set ip6=n
- ::查看记录默认值
- set ip7=2
- ::回响请求消息的次数
- set ip8=200
- ::等待回响应答消息响应的时间(以微妙计)
- ::下面如你不理解不要更改
- if "%1"=="/?" goto op1
- if "%1"=="-?" goto op1
- if /i "%1"=="/h" goto op1
- if /i "%1"=="-h" goto op1
- if /i "%1"=="/help" goto op1
- if /i "%1"=="-help" goto op1
- if "%1"=="" goto op2
- if "%2"=="" goto op2
- if "%3"=="" goto op2
- set ip=%1
- set ip1=%2
- set ip2=%3
- goto op3
- :op1
- echo.
- echo 如果你经常维护局域网时,想在一台机中测试一下它能否连接到其它网内的机器时就用它吧,十几秒钟就搞定。
- echo.
- echo 如果从其它程序中调用:本程序名
- echo 例子:本程序名 192.168.0 1 10
- echo.
- echo.
- echo 如果你的机器太差那么 起始数到结束数 的范围别太大,否则机器可能会假死。
- echo yangzhiyi 作品 于 2008-3-13 日
- echo.
- pause >nul
- cls
- :op2
- echo 输入IP地址前段 默认为:%ip%
- set /p ip=输入:
- echo 输入起始数 默认为:%ip1%
- set /p ip1=输入:
- echo 输入结束数 默认为:%ip2%
- set /p ip2=输入:
- :op3
- rd /s /q "%temp%\iptest" 1>nul 2>nul
- md "%temp%\iptest" 1>nul 2>nul
- echo ;成功的地址 (%date% %time%)> "%temp%\iptest\okip.txt"
- echo ;失败的地址 (%date% %time%)> "%temp%\iptest\noip.txt"
- set ip3=%ip1%,1,%ip2%
- ::起始数,跳跃数,结束数 注意:不要随便更改此参数
- for /l %%a in (%ip3%) do start /min "网邻连通测试 ping %ip%.%%a" cmd /c "@mode con cols=43 lines=5 & echo 测试中,请等待。。。 & ping %ip%.%%a -n %ip7% -w %ip8% >nul&&echo %ip%.%%a>>"%temp%\iptest\okip_%%a.txt" || echo %ip%.%%a>>"%temp%\iptest\noip_%%a.txt""
- :op4
- cls
- echo 请在所有项目测试完后输入y键:
- set /p ip4=是否已完成:
- if /i not "%ip4%" == "y" goto op4
- for /l %%b in (%ip3%) do IF EXIST "%temp%\iptest\okip_%%b.txt" more "%temp%\iptest\okip_%%b.txt" >> "%temp%\iptest\okip.txt"
- for /l %%b in (%ip3%) do IF EXIST "%temp%\iptest\noip_%%b.txt" more "%temp%\iptest\noip_%%b.txt" >> "%temp%\iptest\noip.txt"
- cls
- IF EXIST okip.txt set /p ip5=是否清空原有记录(是为y):& goto op5
- IF EXIST noip.txt set /p ip5=是否清空原有记录(是为y):
- :op5
- if /i "%ip5%1" == "y1" (
- del /q /f okip.txt 2>nul 1>nul
- del /q /f noip.txt 2>nul 1>nul
- copy /y "%temp%\iptest\okip.txt" okip.txt 2>nul 1>nul
- copy /y "%temp%\iptest\noip.txt" noip.txt 2>nul 1>nul
- ) ELSE (
- more "%temp%\iptest\okip.txt" >> okip.txt
- more "%temp%\iptest\noip.txt" >> noip.txt
- )
- echo off
- cls
- echo.
- echo -------------------------------测试结果-------------------------------
- type "%temp%\iptest\okip.txt"
- echo.
- type "%temp%\iptest\noip.txt"
- echo.
- echo -------------------------------结果结束-------------------------------
- del /q /f "%temp%\iptest\*.*" 2>nul 1>nul
- rd /s /q "%temp%\iptest" 2>nul 1>nul
- IF EXIST okip.txt set /p ip6=是否查看记录(是为y):
- if /i "%ip6%1" == "y1" (
- IF EXIST noip.txt start noip.txt
- IF EXIST okip.txt start okip.txt
- )
Originally posted by zw19750516 at 2008-3-13 09:25:
请把问题说清楚点,整个就搞不懂你要解决什么问题,一会这一会那的。
你的 echo %ip% >nul 并不在 for 里面循环嘛
CODE: 的使用: 在代码前加上 code (注:code在中括号里,这样写是为了让你看得到),写完代码后加上 /code (注:/code在中括号里).
嘿嘿,刚试了下真是把quote改成code