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

[文件操作] 批处理命令findstr在for循环中的执行结果为何出错?

[复制链接]
发表于 2013-11-25 23:39:37 | 显示全部楼层 |阅读模式
小弟遇到一个问题,请各位大侠指教,详情如下:
1、环境:windows7专业版 64位+SP1
2、bat文件内容:
  1. @echo off
  2. title This is a test for dos !
  3. FOR /F "delims=" %%i in (aaa.txt) do (
  4.         findstr %%i bbb.txt
  5.   if %errorlevel%==0 (
  6.           echo ok !
  7.           )
  8.         )
  9. echo.
  10. pause
  11. @echo on
复制代码
3、aaa.txt文件内容:
111
222
444

4、bbb.txt文件内容:
ddfds111sadf dfasdf  kjlkj
fdfd111dfa lkl kl
222adfsadf dsfh  mnmkn
4545222  kjlk ads
d333dsf  jksajlkf

5、执行bat结果:
ddfds111sadf dfasdf  kjlkj
fdfd111dfa lkl kl
ok !
222adfsadf dsfh  mnmkn
4545222  kjlk ads
ok !
ok !

请按任意键继续. . .

6、问题:为啥findstr在for循环中的执行结果都是0?很明显444的搜索结果不是0啊!
发表于 2013-11-26 00:40:05 | 显示全部楼层

  1. @echo off
  2. title This is a test for dos !
  3. FOR /F "delims=" %%i in (aaa.txt) do (
  4.         findstr "%%i" bbb.txt&&echo ok !
  5. )
  6. echo.
  7. pause
复制代码
or

  1. @echo off&setlocal enabledelayedexpansion
  2. title This is a test for dos !
  3. FOR /F "delims=" %%i in (aaa.txt) do (
  4.         findstr "%%i" bbb.txt
  5.         if !errorlevel!==0 (
  6.             echo ok ^^!
  7.         )
  8. )
  9. echo.
  10. pause
复制代码
http://www.bathome.net/viewthrea ... 4%C1%BF%D1%D3%B3%D9
 楼主| 发表于 2013-11-26 06:27:57 | 显示全部楼层
回复 2# xxpinqz

谢谢,用方法一解决了,是否可以解释下原因?
发表于 2013-11-26 16:52:26 | 显示全部楼层
本帖最后由 林小七 于 2013-11-26 16:56 编辑

回复 3# beber


    你可以去论坛搜索下&&与&和||的区别。。。。。帖子地址我不记得了。。。。。
第二个开启了变量延迟,,,论坛也有非常详细的教程,,这楼上的目的主要是获取上面查找的返回值,,,,返回值可以在论坛找到教程,,,,
0代表成功。。1,2,3。。。。等代表失败,,具体返回值代表不同的原因,,,,
你写的那个查找失败是因为没有开启变量延迟。。。无法获取正确的返回值吧,,,可以使用call解决或者如同楼上开启延迟~
多动手,,多动脑,,,希望对你有帮助~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-20 18:31 , Processed in 0.030101 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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