中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-28 13:29
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已结]请问如何查找不包含的多个字符串 查看 983 回复 6
楼 主 [已结]请问如何查找不包含的多个字符串 发表于 2008-11-04 10:28 ·  中国 江苏 徐州 电信
新手上路
积分 10
发帖 6
注册 2008-11-03 13:18
17年会员
UID 129861
性别 男
状态 离线
我想在一个文件中同时查字多个不含例如”AA“,”BB“,”CC“的字符串,然后把不包括上述字符串的内容生成一个新文件,请问该如何编写,谢谢!!

[ Last edited by HAT on 2008-11-7 at 00:21 ]
2 发表于 2008-11-04 17:05 ·  中国 重庆 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
19年会员
UID 89899
性别 男
状态 离线
findstr /v "AA BB CC" "a.txt">"b.txt"
3 发表于 2008-11-04 21:18 ·  中国 江苏 徐州 联通
新手上路
积分 10
发帖 6
注册 2008-11-03 13:18
17年会员
UID 129861
性别 男
状态 离线
谢谢HAT版主解答,但字符串变成文字后,执行批处理后与原文件的记录是相同的
例:A.TXT
五一
六一
十一
八一
批处理:findstr /v "五一 六一 十一" "a.txt">"b.txt"
但B.TXT的结果仍为
五一
六一
十一
八一
4 发表于 2008-11-06 15:31 ·  中国 江苏 徐州 电信
新手上路
积分 10
发帖 6
注册 2008-11-03 13:18
17年会员
UID 129861
性别 男
状态 离线
请高手解答
5 发表于 2008-11-06 15:51 ·  中国 江西 赣州 电信
银牌会员
★★★★
积分 2,025
发帖 1,122
注册 2007-09-05 20:15
18年会员
UID 96653
性别 男
状态 离线
这样:
findstr /v "五一.* 六一 十一" a.txt

为什么要改成这样我也不知道。我试出来的。
而你说的换成中文又无效确实很奇怪。。
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
HAT +2 2008-11-07 12:47
6 发表于 2008-11-06 22:14 ·  中国 江苏 徐州 联通
新手上路
积分 10
发帖 6
注册 2008-11-03 13:18
17年会员
UID 129861
性别 男
状态 离线
感谢tireless朋友的解答,已成功解决了

但还要请教一下,这个".* "的含义代表什么,谢谢
7 Re 6 楼 发表于 2008-11-06 22:20 ·  中国 江西 赣州 安远县 电信
银牌会员
★★★★
积分 2,025
发帖 1,122
注册 2007-09-05 20:15
18年会员
UID 96653
性别 男
状态 离线
C:\>findstr /?
在文件中寻找字符串。

FINDSTR
]
strings filename]

/B 在一行的开始配对模式。
/E 在一行的结尾配对模式。
/L 按字使用搜索字符串。
/R 将搜索字符串作为一般表达式使用。
/S 在当前目录和所有子目录中搜索
匹配文件。
/I 指定搜索不分大小写。
/X 打印完全匹配的行。
/V 只打印不包含匹配的行。
/N 在匹配的每行前打印行数。
/M 如果文件含有匹配项,只打印其文件名。
/O 在每个匹配行前打印字符偏移量。
/P 忽略有不可打印字符的文件。
/OFF 不跳过带有脱机属性集的文件。
/A:attr 指定有十六进位数字的颜色属性。请见 "color /?"
/F:file 从指定文件读文件列表 (/ 代表控制台)。
/C:string 使用指定字符串作为文字搜索字符串。
/G:file 从指定的文件获得搜索字符串。 (/ 代表控制台)。
/D:dir 查找以分号为分隔符的目录列表
strings 要查找的文字。
filename
指定要查找的文件。

除非参数有 /C 前缀,请使用空格隔开搜索字符串。
例如: 'FINDSTR "hello there" x.y' 在文件 x.y 中寻找 "hello" 或
"there" 。 'FINDSTR /C:"hello there" x.y' 文件 x.y 寻找
"hello there"。

一般表达式的快速参考:
. 通配符: 任何字符
* 重复: 以前字符或类别出现零或零以上次数

^ 行位置: 行的开始
$ 行位置: 行的终点
字符类别: 任何在字符集中的字符
补字符类别: 任何不在字符集中的字符
范围: 在指定范围内的任何字符
\x Escape: 元字符 x 的文字用法
\<xyz 字位置: 字的开始
xyz\> 字位置: 字的结束

有关 FINDSTR 常见表达法的详细情况,请见联机命令参考。

在这个帖子中为什么要这么用,我也不太明白。
论坛跳转: