标题: [文本处理] 【已解决】用批处理怎样实现从文本中查找特定字符串 [打印本页]
作者: 思想之翼 时间: 2018-1-31 23:41 标题: 【已解决】用批处理怎样实现从文本中查找特定字符串
本帖最后由 思想之翼 于 2018-2-2 01:51 编辑
D:\01\文件夹内有7315个文本,命名0001-7315,每个文本记录若干行数据,格式为
0123
3258
9871
...
D:\02\文件夹内有7315个文本,命名0001-7315,每个文本记录一行数据,格式为
0123
若D:\01\0001.txt包含D:\02\0001.txt,则为真
若D:\01\0002.txt不包含D:\02\0002.txt,则为假
若D:\01\0003.txt包含D:\02\0003.txt,则为真
...
若D:\01\7315.txt包含D:\02\7315.txt,则为真
然后统计共有多少真,比如有7311个真,则将7311写入D:\03\统计.txt
作者: Blitz 时间: 2018-2-1 02:05
没看明白
作者: 思想之翼 时间: 2018-2-1 08:57
回复 2# Blitz
比如D:\01\0001.txt内数据是
1234
2345
5678
D:\02\0001.txt内数据是
2345
即D:\01\0001.txt的数据包含D:\02\0001.txt的数据
同理比较D:\01\与D:\02\内对应同名文本内的数据,之后统计包含的文本共有多少
作者: WHY 时间: 2018-2-1 11:09
本帖最后由 WHY 于 2018-2-1 13:33 编辑
test.js- var srcDir1 = 'D:/01';
- var srcDir2 = 'D:/02';
- var dstDir = 'D:/03';
-
- var totalNum = 0;
- var fso = new ActiveXObject('Scripting.FileSystemObject');
- var e = new Enumerator(fso.GetFolder(srcDir1).files);
-
- if(!fso.FolderExists(dstDir)) fso.CreateFolder(dstDir);
-
- for(; !e.atEnd(); e.moveNext()){
- var srcFile1 = e.item().Path;
- var srcFile2 = srcDir2 + '/' + e.item().Name;
-
- if(/\.txt$/i.test(srcFile1) && fso.FileExists(srcFile2)){
- totalNum += IsContained(srcFile1, srcFile2);
- }
- }
-
- function IsContained(srcFile1, srcFile2){
- var str1 = fso.OpenTextFile(srcFile1, 1).ReadAll();
- var str2 = fso.OpenTextFile(srcFile2, 1).ReadLine();
-
- var reg = new RegExp('^' + str2 + '$', 'mi');
- if(reg.test(str1)) { return 1; } else return 0;
- }
-
- fso.OpenTextFile(dstDir + '/统计.txt', 2, true).WriteLine(totalNum);
-
- WSH.Echo('Done!')
复制代码
作者: WHY 时间: 2018-2-1 13:35
本帖最后由 WHY 于 2018-2-11 01:33 编辑
test.ps1- $srcDir1 = 'D:\01';
- $srcDir2 = 'D:\02';
- $dstDir = 'D:\03';
-
- $totalNum = 0;
- If(!(Test-Path $dstDir)){$null = New-Item $dstDir -ItemType directory;}
-
- $di = New-Object IO.DirectoryInfo($srcDir1);
- $fi = $di.GetFiles('*.txt', [IO.SearchOption]::TopDirectoryOnly);
- $count = $fi.Count;
-
- For($i=0; $i -lt $count; $i++){
- $srcFile1 = $fi[$i].FullName;
- $srcFile2 = $srcDir2 + '\' + $fi[$i].Name;
- If(Test-Path $srcFile2){
- $arr = [IO.File]::ReadAllLines($srcFile1, [Text.Encoding]::Default);
- $str = type $srcFile2 -ReadCount 1;
- If($arr -Contains $str){ $totalNum++; }
- }
- }
-
- $totalNum > ($dstDir + '\统计.txt')
复制代码
作者: 思想之翼 时间: 2019-2-12 15:48
本帖最后由 思想之翼 于 2019-2-12 17:47 编辑
回复 4# WHY 感谢帮助!如果文本数据格式由竖排变为横排,比如D:\01\0001.txt内数据是
1234
2345
5678
现在改变为
1234 2345 5678
D:\02\0001.txt内数据是
2345
您的代码如何修改?
作者: WHY 时间: 2019-2-12 18:44
回复 6# 思想之翼
第 24 行:- var reg = new RegExp('\\b' + str2 + '\\b');
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |