Board logo

标题: [文本处理] 批处理findstr /v /g对比文件为何出错? [打印本页]

作者: bluewing009    时间: 2011-4-30 14:56     标题: 批处理findstr /v /g对比文件为何出错?

利用/v /g: 可以对比两个文本的异同,现在我利用这两个参数在对比文本时出错:
1测试:reg query 导出注册表run项目
2测试:dir /a获得某个目录下全部文件名称
以上是标准文本的获取过程,当我再次运行获取需要对比文本后,因为没变化,那么对比应该没有结果才对,但是利用/v /g缺出现了错误显示:
1测试:文本全部内容
2.测试:以xy等开头“顺序”较靠后的文件
作者: powerbat    时间: 2011-4-30 15:17

你不知道findstr以Bug超多而出名吗?
作者: Batcher    时间: 2011-4-30 15:23

Vista用户表示影响不大
C:\Test>dir /b MyFolder >a.txt

C:\Test>dir /b MyFolder >b.txt

C:\Test>findstr /v /g:a.txt b.txt

C:\Test>findstr /v /g:b.txt a.txt

C:\Test>

作者: batman    时间: 2011-4-30 15:31

xp用户表示没有影响:
  1. D:\批处理\test>call cmd
  2. Microsoft Windows XP [版本 5.1.2600]
  3. (C) 版权所有 1985-2001 Microsoft Corp.
  4. D:\批处理\test>dir /b %cd%>1.txt
  5. D:\批处理\test>dir /b %cd%>2.txt
  6. D:\批处理\test>findstr /v /g:1.txt 2.txt
  7. 2.txt
  8. D:\批处理\test>findstr /v /g:2.txt 1.txt
  9. D:\批处理\test>
复制代码

作者: hanyeguxing    时间: 2011-4-30 21:17

楼主需要贴出实际运行代码。
findstr /v /g 使用中需要注意很多,例如:
1,查看被比较文件是否均为 ANSI 编码
2,是否存在 \ * . [] - 等 findstr 元字符
作者: bluewing009    时间: 2011-4-30 23:50

3# Batcher

4# batman

5# hanyeguxing



在本地我获取的是system32下文件名....额  文本的话有1M 就不再传上来占用空间了  可以自行测试


以下是run键值获取举例:


  1. C:\Program Files\Common Files\123.exe
  2. C:\Program Files\55 ss\11.exe -s -d
  3. C:\Program Files\ffc\st /start
  4. C:\Program Files\Common Files\mm.exe  -background
  5. D:\45 44\s.exe /0 /5 /3 /st
  6. D:\Program Files\工具\哈哈.exe
复制代码


作者: powerbat    时间: 2011-5-1 09:34

有元字符时加/l也没用。还是findstr有问题,想支持正则表达式还要搞个阉割版、畸形版,搞出bug一堆
作者: bluewing009    时间: 2011-5-1 20:43

up看看有什么想法的~




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