中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-09-29 05:35
共 47,813 主题排行 / 349,918 发帖 / 今日 0 篇 / 48,278 会员排行
DOS批处理 & 脚本技术(批处理室) » 查找带有空格的字符串
可打印版本  2,482 / 27
第1楼 ka56 发表于 2008-10-04 13:35
中级用户 发帖 129 积分 234
查找带有空格的字符串
findstr "%abc%" "test.txt">"查到的号.txt"

我要查找的变量%abc%是这样的类型:
" 7777"
"7777 "
即数字前面或后面有个空格.要求查找时满足条件要求,严格匹配,举个例:
查找" 7777"

*正确的搜索结果为:
7777183
7777254

*不正确的结果是(上面代码搜出来就是这样):

7777183
7777254
3577776
4777724
......
(7777前面必须带有一个空格的指令没被接受,只含7777在中间的也出来了)

大虾帮改正下,感谢!!
第2楼 tireless 发表于 2008-10-04 14:40
银牌会员 发帖 1,122 积分 2,025
FINDSTR
]
strings filename]

/B 在一行的开始配对模式。

加上 /B 参数,就只匹配开头为 7777 的行。
第3楼 ka56 发表于 2008-10-04 14:47
中级用户 发帖 129 积分 234
Originally posted by tireless at 2008-10-4 14:40:

加上 /B 参数,就只匹配开头为 7777 的行。

测试好象不能通过..
假如还要找在后面甚至在中间的,有个通用的法子吗?

[ Last edited by ka56 on 2008-10-4 at 14:50 ]
第4楼 bel87 发表于 2008-10-04 15:22
新手上路 发帖 1 积分 2
[原创]WOW05
第5楼 HAT 发表于 2008-10-04 15:28
版主 发帖 5,017 积分 9,023
Originally posted by ka56 at 2008-10-4 01:35 PM:
*正确的搜索结果为:
7777183
7777254

上看下看左看右看,还是没有看到“正确的搜索结果”中什么地方有空格,被论坛过滤掉了?
不知道是不是这个意思:
第6楼 ka56 发表于 2008-10-04 15:49
中级用户 发帖 129 积分 234
Originally posted by HAT at 2008-10-4 15:28:

上看下看左看右看,还是没有看到“正确的搜索结果”中什么地方有空格,被论坛过滤掉了?
不知道是不是这个意思:


被过滤了,变量是随机,所以有点麻烦~~
第7楼 ka56 发表于 2008-10-04 16:02
中级用户 发帖 129 积分 234
最大的特点是,字符串的前面或后面有一个空格.
第8楼 tireless 发表于 2008-10-04 16:20
银牌会员 发帖 1,122 积分 2,025
开头:


结尾:


中间...(办法比较笨)


[ Last edited by tireless on 2008-10-4 at 17:28 ]
第9楼 pusofalse 发表于 2008-10-04 16:28
银牌会员 发帖 646 积分 1,604
第10楼 ka56 发表于 2008-10-04 17:17
中级用户 发帖 129 积分 234
Originally posted by tireless at 2008-10-4 16:20:
开头:


结尾:
第11楼 tireless 发表于 2008-10-04 17:47
银牌会员 发帖 1,122 积分 2,025
Originally posted by ka56 at 2008-10-4 05:17 PM:


结尾的可以找出来,开头的不行,,

我测试没有问题。
第12楼 zqz0012005 发表于 2008-10-04 17:49
中级用户 发帖 135 积分 297
只能怪findstr的正则太肉了,遇到空格就傻眼。
那就查找2次吧
第13楼 ceii 发表于 2008-10-04 17:57
初级用户 发帖 45 积分 115
Originally posted by zqz0012005 at 2008-10-4 05:49 PM:
只能怪findstr的正则太肉了,遇到空格就傻眼。
那就查找2次吧
第14楼 zqz0012005 发表于 2008-10-04 18:10
中级用户 发帖 135 积分 297
Re 13楼
我要查找的变量%abc%是这样的类型:
" 7777"
"7777 "
即数字前面或后面有个空格.要求查找时满足条件要求,严格匹配


你这个只能查找开头是空格接着是7777的字符串,没理解楼主的要求
第15楼 ka56 发表于 2008-10-04 18:27
中级用户 发帖 129 积分 234
Originally posted by zqz0012005 at 2008-10-4 18:10:


你这个只能查找开头是空格接着是7777的字符串,没理解楼主的要求

开头是空格接着是7777的字符串
这个我是用一个变量,试了几个虾虾的代码都找不出来,邪门了....

@echo off
@echo WScript.StdOut.Write(new ActiveXObject('htmlfile').parentWindow.clipboardData.getData('text'))> tmp.js 2>nul
@for /f "delims=" %%a in ('cscript //Nologo tmp.js') do @set ClipboardText=%%a >nul 2>nul
@del tmp.js /f /q >nul 2>nul
@echo %ClipboardText%
findstr "%ClipboardText%" "用来查找的文档.txt">"查到的号.txt"
type 查到的号.txt| clip


这是我原来的代码.

用来查找的文档.txt的格式:(每行的开头结尾都有个空格)

77773050
77775081
15686081
29682122
30290010
31481070
37887777
37890100
37897777
45089031
45980031
---------------------------------------------------

思路:我只要先复制"7777",运行批处理,就能把" 7777"开头和"7777 "结尾的四个号都搜出来了...

根据tireless兄的代码,我整理如下:
@echo off
@echo WScript.StdOut.Write(new ActiveXObject('htmlfile').parentWindow.clipboardData.getData('text'))> tmp.js 2>nul
@for /f "delims=" %%a in ('cscript //Nologo tmp.js') do @set ClipboardText=%%a >nul 2>nul
@del tmp.js /f /q >nul 2>nul
@echo %ClipboardText%
for %%g in (" %ClipboardText%" "^ %ClipboardText%") do findstr /rc:%%g 用来查找的文档.txt>"查到的号.txt"
for %%b in ("%ClipboardText%$") do findstr /r /c:%%b 用来查找的文档.txt>>"查到的号.txt"
type 查到的号.txt| clip

但只能找出结尾的出来:

37887777
37897777

哪位大虾再帮我指教下....

[ Last edited by ka56 on 2008-10-4 at 18:29 ]
1 2  下一页
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023