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

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

小弟遇到一个问题,请各位大侠指教,详情如下:
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 16:56 编辑

回复 3# beber


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

TOP

回复 2# xxpinqz

谢谢,用方法一解决了,是否可以解释下原因?

TOP

  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
初学BAT,非专业。代码不适当之处还望前辈们多多指点。在此表示感谢!

TOP

返回列表