标题: [文本处理] 批处理如何根据A文本列出的字符串/关键词提取出B文本以这些字符串/关键词开头的行? [打印本页]
作者: torrent151221 时间: 2016-7-4 17:23 标题: 批处理如何根据A文本列出的字符串/关键词提取出B文本以这些字符串/关键词开头的行?
本帖最后由 pcl_test 于 2016-7-4 18:35 编辑
有两个文件a.txt b.txt
a.txt中是一些关键字,内容如下:
test
add-ii
new
abc-ee
b.txt中是需要搜索的文件,里面内容如下:
1.说明**
数字dsds**
2.解决9999***
test *******
abc-ee ******
可能****
3. 在说明**
说明test555****
想要获取b.txt中,包含a.txt关键字打头的行的内容并写入c.txt中
使用:
findstr /ig:a.txt /b b.txt
输出结果是空的
使用命令:
findstr /ig:a.txt b.txt
结果输出:
test *******
abc-ee ******
说明test555****
但是我只想要a.txt中关键字打头的行
注:
a.txt中每行开始没有空格,也没有tab键
b.txt中每行开始有的有空格,有的没有空格。以a.txt中关键字打头的行,关键字前都有个tab键
作者: pcl_test 时间: 2016-7-4 19:44
- //&cls&cscript -nologo -e:jscript "%~f0"<"a.txt" "b.txt"&pause&exit
- var str = WSH.StdIn.ReadAll().replace(/[\*\.\?\+\$\^\[\]\(\)\{\}\|\/]/g,'\\$&').split(/\r\n/).join('|');
- var reg = new RegExp('(^|[\\r?\\n])[ \\t]*('+str+').*', 'g');
- var lines = (new ActiveXObject('Scripting.FileSystemObject')).OpenTextFile(WSH.Arguments(0), 1).ReadAll().match(reg);
- WSH.echo(lines.join(''));
复制代码
作者: pcl_test 时间: 2016-7-5 13:00
回复 4# torrent151221
批处理不是vbs
作者: torrent151221 时间: 2016-7-6 15:07
回复 3# pcl_test
改成批处理运行也出错
H:\tmp\test.bat(1, 1) Microsoft JScript 编译错误:
无效字符
请按任意键继续. . .
作者: pcl_test 时间: 2016-7-6 15:14
回复 4# torrent151221
批处理文件编码要ANSI,你自己是不是增加了其他内容?把你的bat文件及测试txt打包发附件上来
作者: torrent151221 时间: 2016-7-6 16:30
本帖最后由 torrent151221 于 2016-7-6 16:32 编辑
回复 5# pcl_test
编码是ANSI,比对了下内容也一样,但是就是报错,我新拷贝了一份,再执行没问题了,很奇怪
因为查询的文件有多个,我把这个test.bat传参进去调用,
set preadmetxt=%1
//&cls&cscript -nologo -e:jscript "%~f0"<"menu.txt" "%preadmetxt%"&pause&exit
执行的时候报错
H:\tmp\test.bat(1, 5) Microsoft JScript 编译错误:
缺少“;”
请按任意键继续. .
是不是不能这么用呢
作者: pcl_test 时间: 2016-7-6 16:49
本帖最后由 pcl_test 于 2016-7-7 10:49 编辑
回复 6# torrent151221
所以说肯定是你自己的问题。
2L首行改为,其他莫动- /*&cls
- @echo off
- set "afile=menu.txt"
- cscript -nologo -e:jscript "%~f0"<"%afile%" "%~1">"结果.txt"
- pause&exit
- */
复制代码
作者: torrent151221 时间: 2016-7-6 17:27
本帖最后由 pcl_test 于 2016-7-6 17:54 编辑
回复 7# pcl_test
又报错了
H:\tmp\test.bat(10, 5) Microsoft JScript 运行时错误
: 错误的文件名或号码
请按任意键继续. . .
作者: pcl_test 时间: 2016-7-6 17:55
回复 8# torrent151221
把你的bat文件及测试txt打包发附件上来
作者: torrent151221 时间: 2016-7-7 11:17
回复 9# pcl_test
找到原因了,传参不支持*号通配符
现在又有另一个问题,执行test.bat后,整个程序就退出了
把pause&exit删掉也还是会退出
要怎么处理呢
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |