标题: [文本处理] [已解决]批处理命令findstr无法识别字符中括号 [打印本页]
作者: Lumiere 时间: 2009-7-21 12:41 标题: [已解决]批处理命令findstr无法识别字符中括号
如题,本人在回帖的时候遇到一个很奇怪有趣的问题。如下,文本a.txt内容如下:- [test:\]
- afaf
- *****
- afaslfjk
- *****
- [\]
- 4563756
- *****
- arjeljr
- [test:\1]
- *****
复制代码
本人用到的命令是- @echo off
- findstr /v "[.*]" target.txt>>resolution.txt
- pause>nul
复制代码
按照findstr的命令行解释代码的意思是显示文本中所有没有[]匹配的行,中括号中间的字符用.*替代,应该符合findstr的语法。更奇怪的是,我第一次运行的时候,文本生成了,里面的内容是- [test:\]
- afaf
- afaslfjk
- [\]
- 4563756
- arjeljr
- [test:\1]
复制代码
很明显这里findstr并没有将中括号连同里面的字符一起作为要匹配的对象,而是将其作为语法中指定字符集中括号的一部分了,所以有星号的行全跳过。更奇怪的是,我删除生成的resolution文本,过了一阵子再运行bat文件的时候,效果却不一样了,生成的resolution文本里面为空,CMD窗口一直停在那不动,过一会却提示拒绝访问,我崩溃了,同一个代码两次运行效果截然相反,这到底咋回事?难道是findstr的一个bug?麻烦高手指点一二。还有就是,如果文本中有中括号,要用findstr命令将其过滤掉,如文本a所示,该怎么写这个代码?[
[ 本帖最后由 Lumiere 于 2009-7-21 17:27 编辑 ]
作者: zhouyongjun 时间: 2009-7-21 12:55
转义
findstr /v "\[.*\]" a.txt
作者: Lumiere 时间: 2009-7-21 13:12
晕啊,果真如我所料,我用了转义,可是用的是^,呵呵,多谢仁兄周勇军啦
作者: Lumiere 时间: 2009-7-21 13:14 标题: 回复 2楼 的帖子
我重新修改过了,可是用\转义也不行啊
作者: terse 时间: 2009-7-21 13:24
应该可以吧- findstr /ibv "\[.*\]" ok.txt >ook.txt
复制代码
作者: Lumiere 时间: 2009-7-21 14:37 标题: 回复 5楼 的帖子
仁兄的代码和2楼的代码是一样的啊,我测试过了,不行的,CMD窗口一直停那不动,生成的文本也是0字节。不知道为什么。
作者: zhouyongjun 时间: 2009-7-21 14:52 标题: 回复 4楼 的帖子
我这可以啊。你的P是不是命名为findstr或者同目录下有findstr命名的文件?
作者: Lumiere 时间: 2009-7-21 15:12 标题: 回复 7楼 的帖子
星爷你真牛啊,佩服,一针溅血,因为我用find和findstr两个命令得到两种方案,所以就把bat文件命名成命令的文件名了,刚才一直纳闷每次结果都不一样,很有趣,刚才我一点运行,任务管理器李的cmd.exe进程就疯长,CMD窗口就一直停在那不动。现在终于原因了。为什么bat文件那样命名的话就会出现这样的问题呢?
作者: Lumiere 时间: 2009-7-21 15:15 标题: 回复 7楼 的帖子
看来是自身调运进入了死循环,可是bat代码里面有那么多参数,照道理应该提示错误才对,为什么就那样死在那了呢?
作者: zhouyongjun 时间: 2009-7-21 15:22
这是批处理本身运行机制的问题,一个命令它是按下面顺序查找的:
查找自身内部命令
P的当前目录
环境变量目录
findstr是外部命令,所以是优先级别低于当前目录的findstr文件
作者: keen 时间: 2009-7-21 16:37 标题: 回复 9楼 的帖子
所以,切忌用命令作为文件名。
如果问题得到解决,请给标题主动添加【已解决】字样,谢谢!
作者: Lumiere 时间: 2009-7-21 17:24 标题: 回复 10楼 的帖子
多谢兄,又上了一课,呵呵
作者: Lumiere 时间: 2009-7-21 17:26 标题: 回复 11楼 的帖子
will do!i was just waiting for further answering from zhouyongjun before i put an end to this article.
anyway thank you for reminding me of this.
作者: keen 时间: 2009-7-21 17:32 标题: 回复 13楼 的帖子
Lumiere兄的英语太帅了,我建议可以去参加论坛的有奖翻译!^_^
作者: Lumiere 时间: 2009-7-21 21:10 标题: 回复 14楼 的帖子
巡查兄抬爱了,献献丑,还望前辈们别见笑就好。呵呵,有时间的话我会去挣些分的,多谢大家的回复啊!
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |