![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-07 18:09 |
共 48,041 主题排行 / 350,128 发帖 / 今日 3 篇 / 48,252 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 新人学dos.学不会bat判断 |
| 可打印版本 864 / 8 |
| 第1楼 snowbbbb | 发表于 2008-03-12 10:04 |
| 初级用户 发帖 42 积分 118 | |
|
新人学dos.学不会bat判断 ping 192.168.0.1 >1.txt
type 1.txt | find "time<1ms" & set a=time<1ms if "%a%"=="%a%" goto end if not "%a%"=="%a%" goto noping 这样提问可能会好一点, 能否有人告知一下 这个地方该怎么写+ 或者是 我想做一个检测 如果ping 192.168.1通的话 跳到一个 如果不通的话 跳到另一个 [ Last edited by snowbbbb on 2008-3-12 at 08:48 PM ] |
|
| 第2楼 snowbbbb | 发表于 2008-03-12 11:04 |
| 初级用户 发帖 42 积分 118 | |
|
另外想问一下,
:noping echo. pause & exit :end echo. pause & exit有必要么? :这个标签 标到什么时候结束呢? |
|
| 第3楼 abcd | 发表于 2008-03-12 11:07 |
| 银牌会员 发帖 739 积分 1,436 | |
|
find "%a%" 1.txt>nul 2>nul&&goto end
类似这样。 说实话,上面的P,可以进一步优化 |
|
| 第4楼 snowbbbb | 发表于 2008-03-12 11:48 |
| 初级用户 发帖 42 积分 118 | |
|
abcd能否给出优化后的代码?
|
|
| 第5楼 abcd | 发表于 2008-03-12 12:06 |
| 银牌会员 发帖 739 积分 1,436 | |
arp -d 可以这样。 |
|
| 第6楼 bat-zw | 发表于 2008-03-12 16:46 |
| 金牌会员 发帖 1,276 积分 3,105 | |
|
呵呵,你应该是个网吧的网管这段(noping开始)应是来源于网上,我看过类似的,好了不多说了,为了共同提高的目的,我来解决你前面的问题,呵呵,代码如下:
findstr /c:"%a%" 1.txt if errorlevel 0 goto :eof\:eof 表示结束整个P处理 findstr /c:"%b%" 1.txt if errorlevel 0 goto noping 但不知道当两个字符串都没找到你要怎么处理,给个建议你吧: findstr /c:"%a%" 1.txt if errorlevel 0 goto :eof findstr /c:"%b%" 1.txt if errorlevel 0 goto noping :set cls&set /p a=没有找到任何字符串,是否继续程序运行:(1.继续 2.结束) if "%a%"="1" goto wrong if "%a%"="2" goto :eof :wrong cls&echo 输入错误,请返回正确输入!&ping/n 3 127.1 >nul&goto set [ Last edited by zw19750516 on 2008-3-12 at 04:58 PM ] |
|
| 第7楼 snowbbbb | 发表于 2008-03-12 18:28 |
| 初级用户 发帖 42 积分 118 | |
|
zw19750516 find和findstr有什么区别?
双绑的确是来自于网上 要不也不会出现使用for命令而我不会用的情况了, if errorlevel 0 这种模式是怎么讲的呢 偶在cmd if /?看不到这个帮助。 能否讲解一下 |
|
| 第8楼 snowbbbb | 发表于 2008-03-12 18:43 |
| 初级用户 发帖 42 积分 118 | |
|
@echo off & title 网关修复程序
mode con cols=20 lines=10 color 9f echo. echo ==================== echo ....检测中... echo ==================== echo. ping 192.168.0.1 >1.txt type 1.txt | find "time<1ms" & set a=time<1ms if "%a%"=="%a%" goto end if not "%a%"=="%a%" goto noping :noping cls color 8b set flag= for /f "tokens=2 delims=:" %%i in ('ipconfig /all^|find /i "address"') do ( if not defined flag set mac=%%i&set flag=flag set ip=%%i ) arp -d arp -s %ip:~1% %mac:~1% arp -s 192.168.0.1 00-02-b3-3a-2f-c7 cls echo. echo ==================== echo 修复完毕,如果打不 echo 开网页, 请联系网管. echo ==================== echo. :end cls color 3f echo. echo ==================== echo 网络畅通,如果忘记 echo 刷卡, 请呼叫网管. echo ==================== echo. pause & exit . 还是迷惑中。。。。。。教学的贴都用了太多非所教的命令 比如教if 会用for命令来教。。。。 [ Last edited by snowbbbb on 2008-3-12 at 07:36 PM ] |
|
| 第9楼 snowbbbb | 发表于 2008-03-12 19:49 |
| 初级用户 发帖 42 积分 118 | |
|
type 1.txt | find "time<1ms" && if "%a%"=="Minimum" goto end ||if not "%a%"=="Minimum" goto noping
这句话是不是可以这样理解呢 如果在1.txt里找到了time<1ms那么执行下一句gotoend 下边的不再执行 如果在1.txt里没找到time<1ms那么招待后边的if not这一句? |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |