Board logo

标题: [文本处理] [已解决]批处理for /f中嵌套if无法实现判断 [打印本页]

作者: nf99290    时间: 2010-7-23 11:25     标题: [已解决]批处理for /f中嵌套if无法实现判断

先上代码:
  1. for /f "tokens=1-4 delims= " %%i in (dd.txt) do (
  2. nslookup %%j|findstr "\<%%i\>"
  3. if   %errorlevel%   equ   0 (
  4. echo ok
  5. ) else (
  6. goto Alarm
  7. )
  8. )
  9. pause >nul
  10. :Alarm
  11. echo alarm
  12. pause
复制代码
文件dd.txt内容
  1. 119.75.218.45 test.baidu.com
  2. 119.75.218.45 www.baidu.com
复制代码
执行后,%errorlevel% 始终是0,看到是先if,然后nslookup才出结果。而如果把if放到循环外面的话,那么所有循环完成后,只要有一个不符合,就报警,不是我想要的。
我想要的就是一次判断一行,只要有报警,就直接跳出循环体。

不知道要怎么改进,请教各位高手。多谢了。
作者: wankoilz    时间: 2010-7-23 12:40

这样要得不:
  1. @echo off
  2. for /f "tokens=1-4 delims= " %%i in (dd.txt) do (
  3.     nslookup %%j|findstr "\<%%i\>" &&echo ok||echo alarm
  4. )
  5. 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