[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 如何循环查找A文件中的内容在B文件中是否存在?不存在的文件输出到另外一个文件中。

请问如何循环查找A文件中的内容在B文件中是否存在?A文件中以JIRA-XX开始到空行结束,在B文件中搜索Message:下一行的内容等于JIRA-XX,且A中的代码行在B文件中----下面的代码行是否存在,
如果不存在就输出JIRA-XX和不存在的代码行,以空格行为一段落,循环搜索。

A文件格式:

JIRA-29
CRM\DB\crm\CEP_TERMINAL_SUBSIDY_LOCAL.pck    //a文件
CRM\BizHall\WebRoot\cust\custMergerQuery.js       //b文件
CRM\BizHall\WebRoot\cust\pagination.js                //c文件

JIRA-1154
CRM\BizHall\WebRoot\cust\custMergerQuery.jsp
CRM\BizHall\WebRoot\cust\custMergerQuery.js
CRM\BizHall\WebRoot\cust\pagination.js

B文件格式

Revision: 7139
Author: xiaoy
Date: 17:15:57, 2012年2月20日
Message:
JIRA-29
----
Modified : /trunk/CRM/DB/crm/CEP_TERMINAL_SUBSIDY_LOCAL.pck

Revision: 7125
Author: yy
Date: 16:47:10, 2012年2月20日
Message:
JIRA-1154
----
Modified : /trunk/CRM/BizHall/WebRoot/cust/pagination.js

我的设计思路是:A文件中以空行为段落(JIRA-XX和下面的代码行为一段落),在B中所搜Message:下一行的内容等于JIRA-XX的段落,
如果等于就检查B文件这段----下面的代码行是否存在A的第一个代码行a文件是否存在,如果a存在,就继续在B文件这段中搜索b文件,
直于B文件中这段以空行结束,然后接着在B文件后面段落搜索,至于文件结束,如果没有就输出JIRA-XX和不存在的代码行内容到new文件;
A文件以空行为结束标志进行循环。
鉴于自己是批处理脚本的菜鸟,有思路,但是写不出来,实在着急。在批处理脚本之家也搜索看了一些帖子,例如:请教批处理如何提取文件中某段文字并生成新文件?
但是里面的代码看的不是很懂,语句也不太会用,只会单条件的进行搜索匹配,所以只好在此发帖请教各位高人指教,先谢谢!

麻烦各位帮帮忙看看!谢谢!

TOP

本帖最后由 caruko 于 2012-3-15 12:28 编辑

建议
先 遍历 A文件,将每个 JIRA-XX 设置成变量名,变量的值就是文件名(如果需要很精确,可能还要考虑路径名)
如 set JIRA-29=CRM\DB\crm\CEP_TERMINAL_SUBSIDY_LOCAL.pck;CRM\BizHall\WebRoot\cust\custMergerQuery.js;CRM\BizHall\WebRoot\cust\pagination.js
如果文件没有空格,也可以用“空格 ," 做分隔符


然后在遍历 B 文件时,当找到JIRA-29时,就在接下来对比%JIRA-29%的内容,每找到一条对应的,就删除一条(可以是字符替换,也可以是这样循环,如 for %%i in ("%JIRA-29%") do .. )

最后剩下来的,就是没有的,也可以在遍历B时添加多余的。


也可以把每个文件作为变量,如
set CRM\DB\crm\CEP_TERMINAL_SUBSIDY_LOCAL.pck=JIRA-29
这样在遍历B时,当搜索到 message时,就
"
set 当前=JIRA-xx
"
接下来对比每个文件路径是否有相应的变量名,而且该变量的值=%当前%

TOP

非常感谢!
这个思路是比我的简单多了!

TOP

返回列表