标题: [文件操作] 批处理命令findstr返回值%errorlevel%为什么恒为1? [打印本页]
作者: ge_xin_yu 时间: 2014-9-11 23:03 标题: 批处理命令findstr返回值%errorlevel%为什么恒为1?
本帖最后由 pcl_test 于 2017-4-1 16:36 编辑
使用findstr命令搜索指定的字符,奇怪的是,即便是成功,返回值也为1。不知何故?以前不是这样的,是系统问题吗?示例代码如下,请大家指点,谢谢!!- @echo off
- findstr "1" 2.txt
- echo.
- echo 返回值=%errorlevel%
- pause
复制代码
2.txt文件内容如下:复制代码
执行后输出如下:复制代码
很明显,找到了包含“1”的字符串,返回值应该为0才对啊,为什么是1呢??
作者: Linuxer 时间: 2014-9-12 00:09
本帖最后由 Linuxer 于 2014-9-12 00:11 编辑
难道跟操作系统有关系?,我在xp下,是正常的
1.bat- @echo off
- findstr "abc" a.txt
- echo 返回值=%errorlevel%
- echo.
- findstr "xyz" a.txt
- echo 返回值=%errorlevel%
- pause
复制代码
a.txt- 11111
- 22222222
- abcd
- defgh
复制代码
执行批处理结果:- abcd
- 返回值=0
-
- 返回值=1
- 请按任意键继续. . .
复制代码
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我试了,也是正常的。- @echo off
- findstr "1" 2.txt
- echo 返回值=%errorlevel%
- if errorlevel 0 echo 找到啦!
- echo.
- findstr "x" 2.txt
- echo 返回值=%errorlevel%
- if errorlevel 1 echo sorry,没找到!
- 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://www.bathome.net/) |
Powered by Discuz! 7.2 |