联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!
@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 如果从其它程序中调用:本程序名 [IP地址前段] [起始数] [结束数] 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 ) 志艺风云发表于: 2008-03-13 02:11
Originally posted by zw19750516 at 2008-3-13 09:25: 请把问题说清楚点,整个就搞不懂你要解决什么问题,一会这一会那的。
你的 echo %ip% >nul 并不在 for 里面循环嘛 CODE: [Copy to clipboard] 的使用: 在代码前加上 []code (注:code在中括号里,这样写是为了让你看得到),写完代码后加上 []/code (注:/code在中括号里).
嘿嘿,刚试了下真是把quote改成code