标题: [文本处理] [已解决]批处理for /f中嵌套if无法实现判断 [打印本页]
作者: nf99290 时间: 2010-7-23 11:25 标题: [已解决]批处理for /f中嵌套if无法实现判断
先上代码:-
- for /f "tokens=1-4 delims= " %%i in (dd.txt) do (
- nslookup %%j|findstr "\<%%i\>"
- if %errorlevel% equ 0 (
- echo ok
- ) else (
- goto Alarm
- )
- )
- pause >nul
- :Alarm
- echo alarm
- pause
复制代码
文件dd.txt内容-
- 119.75.218.45 test.baidu.com
- 119.75.218.45 www.baidu.com
复制代码
执行后,%errorlevel% 始终是0,看到是先if,然后nslookup才出结果。而如果把if放到循环外面的话,那么所有循环完成后,只要有一个不符合,就报警,不是我想要的。
我想要的就是一次判断一行,只要有报警,就直接跳出循环体。
不知道要怎么改进,请教各位高手。多谢了。
作者: wankoilz 时间: 2010-7-23 12:40
这样要得不:- @echo off
- for /f "tokens=1-4 delims= " %%i in (dd.txt) do (
- nslookup %%j|findstr "\<%%i\>" &&echo ok||echo alarm
- )
- pause >nul
复制代码
作者: terse 时间: 2010-7-23 13:24
估计 这个0 是Findstr的 ?
作者: nf99290 时间: 2010-7-23 14:07
原帖由 wankoilz 于 2010-7-23 12:40 发表
这样要得不:@echo off
for /f "tokens=1-4 delims= " %%i in (dd.txt) do (
nslookup %%j|findstr "\" &&echo ok||echo alarm
)
pause >nul
搞定了,原来不一定要if啊,学习学习。
作者: nf99290 时间: 2010-7-23 14:12
原帖由 terse 于 2010-7-23 13:24 发表
估计 这个0 是Findstr的 ?
感谢帮助,已经根据2楼朋友得到答案,if执行的时候根本就没有等nslookup的结果。
作者: iamstar 时间: 2011-12-31 00:43
我原先也是一直用errorlevel 。。。第一次看到这种用法,学习了
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |