Board logo

标题: [文件操作] 批处理命令findstr返回值%errorlevel%为什么恒为1? [打印本页]

作者: ge_xin_yu    时间: 2014-9-11 23:03     标题: 批处理命令findstr返回值%errorlevel%为什么恒为1?

本帖最后由 pcl_test 于 2017-4-1 16:36 编辑

使用findstr命令搜索指定的字符,奇怪的是,即便是成功,返回值也为1。不知何故?以前不是这样的,是系统问题吗?示例代码如下,请大家指点,谢谢!!
  1. @echo off
  2. findstr "1" 2.txt
  3. echo.
  4. echo 返回值=%errorlevel%
  5. pause
复制代码
2.txt文件内容如下:
  1. ff234
  2. dd
  3. 12
复制代码
执行后输出如下:
  1. 12
  2. 返回值=1
  3. 请按任意键继续.
复制代码
很明显,找到了包含“1”的字符串,返回值应该为0才对啊,为什么是1呢??
作者: Linuxer    时间: 2014-9-12 00:09

本帖最后由 Linuxer 于 2014-9-12 00:11 编辑

难道跟操作系统有关系?,我在xp下,是正常的
1.bat
  1. @echo off
  2. findstr "abc" a.txt
  3. echo 返回值=%errorlevel%
  4. echo.
  5. findstr "xyz" a.txt
  6. echo 返回值=%errorlevel%
  7. pause
复制代码
a.txt
  1. 11111
  2. 22222222
  3. abcd
  4. defgh
复制代码
执行批处理结果:
  1. abcd
  2. 返回值=0
  3. 返回值=1
  4. 请按任意键继续. . .
复制代码
http://bbs.bathome.net/viewthread.php?tid=30660&rpid=153784&ordertype=0&page=1#pid153784
作者: DAIC    时间: 2014-9-12 00:17

你获取到的不是第二行 findstr 的返回值,而是第三行 echo. 的返回值。
作者: xudaweb    时间: 2014-9-12 09:24

Win7 64bit ENG OS测试楼主的脚本,正常的,如果找到errorlevel为0,找不到为1。
作者: Linuxer    时间: 2014-9-12 09:43

嗯,win7我试了,也是正常的。
  1. @echo off
  2. findstr "1" 2.txt
  3. echo 返回值=%errorlevel%
  4. if errorlevel 0 echo 找到啦!
  5. echo.
  6. findstr "x" 2.txt
  7. echo 返回值=%errorlevel%
  8. if errorlevel 1 echo sorry,没找到!
  9. pause>nul
复制代码
应该是你客户端方面的原因。
你是以什么用户运行的cmd呢?
如果是普通用户,建议以管理员运行cmd再测试。
作者: ge_xin_yu    时间: 2014-9-12 13:46

回复 5# Linuxer


    系统是xp,以前是正常的,但现在不行,奇怪,难道是系统问题?但系统看上去也正常啊,奇怪!!
作者: ge_xin_yu    时间: 2014-9-12 13:49

回复 3# DAIC


    不应该,以前同样的批处理可以,但现在就不行。真的很怪异,不得不怀疑是系统的问题了,但看上去系统也没有什么问题。返回码还和什么有关系呢??
作者: ge_xin_yu    时间: 2014-9-12 13:50

回复 4# xudaweb


    是的,以前我这儿也行,但现在返回值都是1。是系统问题吗??真是太奇怪的事情了。
作者: ge_xin_yu    时间: 2014-9-12 13:56

回复 2# Linuxer


    原来是正常的,就昨天运行了一下,无论找到找不到,返回值都为1,系统似乎也没什么问题。真是奇怪了!!第一次遇到。。
作者: DAIC    时间: 2014-9-12 14:15

回复 7# ge_xin_yu


errorlevel这个变量里面记录的始终是紧挨着它的上一条命令的返回结果。有可能是你以前记错了。
findstr命令执行完之后,就赶紧去查看errorlevel,中间不要加什么 ehco. 这些乱七八糟的东西。




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2