找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 31627|回复: 5

[文本处理] [已解决]批处理for /f中嵌套if无法实现判断

[复制链接]
发表于 2010-7-23 11:25:37 | 显示全部楼层 |阅读模式
先上代码:

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

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

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢主动给标题标注[已解决]字样

查看全部评分

发表于 2010-7-23 12:40:02 | 显示全部楼层
这样要得不:
  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
复制代码
发表于 2010-7-23 13:24:37 | 显示全部楼层
估计 这个0 是Findstr的 ?
 楼主| 发表于 2010-7-23 14:07:14 | 显示全部楼层
原帖由 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啊,学习学习。
 楼主| 发表于 2010-7-23 14:12:19 | 显示全部楼层
原帖由 terse 于 2010-7-23 13:24 发表
估计 这个0 是Findstr的 ?


感谢帮助,已经根据2楼朋友得到答案,if执行的时候根本就没有等nslookup的结果。
发表于 2011-12-31 00:43:42 | 显示全部楼层
我原先也是一直用errorlevel 。。。第一次看到这种用法,学习了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 13:02 , Processed in 0.017182 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表