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

[文件操作] 批处理命令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: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

TOP

你获取到的不是第二行 findstr 的返回值,而是第三行 echo. 的返回值。

TOP

Win7 64bit ENG OS测试楼主的脚本,正常的,如果找到errorlevel为0,找不到为1。
学习...

TOP

嗯,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再测试。

TOP

回复 5# Linuxer


    系统是xp,以前是正常的,但现在不行,奇怪,难道是系统问题?但系统看上去也正常啊,奇怪!!

TOP

回复 3# DAIC


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

TOP

回复 4# xudaweb


    是的,以前我这儿也行,但现在返回值都是1。是系统问题吗??真是太奇怪的事情了。

TOP

回复 2# Linuxer


    原来是正常的,就昨天运行了一下,无论找到找不到,返回值都为1,系统似乎也没什么问题。真是奇怪了!!第一次遇到。。

TOP

回复 7# ge_xin_yu


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

TOP

返回列表