[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] [已解决]批处理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放到循环外面的话,那么所有循环完成后,只要有一个不符合,就报警,不是我想要的。
我想要的就是一次判断一行,只要有报警,就直接跳出循环体。

不知道要怎么改进,请教各位高手。多谢了。
1

评分人数

    • Batcher: 感谢主动给标题标注[已解决]字样PB + 2

这样要得不:
  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
复制代码

TOP

估计 这个0 是Findstr的 ?

TOP

原帖由 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啊,学习学习。

TOP

原帖由 terse 于 2010-7-23 13:24 发表
估计 这个0 是Findstr的 ?


感谢帮助,已经根据2楼朋友得到答案,if执行的时候根本就没有等nslookup的结果。

TOP

我原先也是一直用errorlevel 。。。第一次看到这种用法,学习了
此人已死,有事烧纸。------亡灵物语

TOP

返回列表