找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 29354|回复: 9

[文本处理] 批处理如何根据A文本列出的字符串/关键词提取出B文本以这些字符串/关键词开头的行?

[复制链接]
发表于 2016-7-4 17:23:06 | 显示全部楼层 |阅读模式
本帖最后由 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键

评分

参与人数 1PB -4 收起 理由
pcl_test -4 勿发笼统的标题

查看全部评分

发表于 2016-7-4 19:44:50 | 显示全部楼层
  1. //&cls&cscript -nologo -e:jscript "%~f0"<"a.txt" "b.txt"&pause&exit
  2. var str = WSH.StdIn.ReadAll().replace(/[\*\.\?\+\$\^\[\]\(\)\{\}\|\/]/g,'\\$&').split(/\r\n/).join('|');
  3. var reg = new RegExp('(^|[\\r?\\n])[ \\t]*('+str+').*', 'g');
  4. var lines = (new ActiveXObject('Scripting.FileSystemObject')).OpenTextFile(WSH.Arguments(0), 1).ReadAll().match(reg);
  5. WSH.echo(lines.join(''));
复制代码
发表于 2016-7-5 13:00:55 | 显示全部楼层
回复 4# torrent151221

批处理不是vbs
 楼主| 发表于 2016-7-6 15:07:26 | 显示全部楼层
回复 3# pcl_test
改成批处理运行也出错
H:\tmp\test.bat(1, 1) Microsoft JScript 编译错误:
无效字符

请按任意键继续. . .
发表于 2016-7-6 15:14:16 | 显示全部楼层
回复 4# torrent151221

批处理文件编码要ANSI,你自己是不是增加了其他内容?把你的bat文件及测试txt打包发附件上来
 楼主| 发表于 2016-7-6 16:30:06 | 显示全部楼层
本帖最后由 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 编译错误:
缺少“;”

请按任意键继续. .

  是不是不能这么用呢
发表于 2016-7-6 16:49:48 | 显示全部楼层
本帖最后由 pcl_test 于 2016-7-7 10:49 编辑

回复 6# torrent151221

所以说肯定是你自己的问题。

2L首行改为,其他莫动
  1. /*&cls
  2. @echo off
  3. set "afile=menu.txt"
  4. cscript -nologo -e:jscript "%~f0"<"%afile%" "%~1">"结果.txt"
  5. pause&exit
  6. */
复制代码
 楼主| 发表于 2016-7-6 17:27:18 | 显示全部楼层
本帖最后由 pcl_test 于 2016-7-6 17:54 编辑

回复 7# pcl_test
又报错了
H:\tmp\test.bat(10, 5) Microsoft JScript 运行时错误
: 错误的文件名或号码

请按任意键继续. . .
发表于 2016-7-6 17:55:13 | 显示全部楼层
回复 8# torrent151221

把你的bat文件及测试txt打包发附件上来
 楼主| 发表于 2016-7-7 11:17:09 | 显示全部楼层
回复 9# pcl_test
找到原因了,传参不支持*号通配符
现在又有另一个问题,执行test.bat后,整个程序就退出了
把pause&exit删掉也还是会退出
要怎么处理呢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 13:50 , Processed in 0.021389 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表