标题: 【已解决】10元求批处理提取合并文本 [打印本页]
作者: lxh623 时间: 2018-11-16 18:18 标题: 【已解决】10元求批处理提取合并文本
E:\duanwenxue\WENZANG和E:\duanwenxue\shige下面有不少三级四级五级文件夹(有些可能没有文本文件)。
我想把每一个文本文件提取特征字符之间的内容,并合并每一个文件夹为一个文本,名字就是文件夹名。只合并到当前级别,批处理出来的文本不再合并。
前特征字符是“>文章内容”,后特征字符是“短文学微信号:duanwenxuewang”,最后不包括特征字符。原文本其他内容不动。
谢谢!
作者: WHY 时间: 2018-11-16 19:46
test.bat
保存到 E:\duanwenxue 目录下,双击运行。- @echo off
- PowerShell "dir -Literal '%~dp0' -Filter *.txt -Recurse|group DirectoryName|%%{$name=$_.Name -replace '.*\\([^\\]+)$','$1.Log';$arr=$_.Group|%%{$m=[IO.File]::ReadAllText($_.FullName,[Text.Encoding]::Default) -match '(?<=>文章内容)[\s\S]*(?=短文学微信号:duanwenxuewang)';If($m){$matches[0]}};sc -Literal ('%~dp0'+$name) -Value $arr}"
- pause
复制代码
作者: yhcfsr 时间: 2018-11-16 20:02
本帖最后由 yhcfsr 于 2018-11-16 21:04 编辑
保存为BAT,放在母目录执行.
这里的多级目录是按全路径来计算的,也就是说E:\duanwenxue是一级目录- @set @n=0/*&echo off
- dir /ad/s/b|cscript -nologo -e:jscript "%~f0"
- pause&exit /b */
- var fso=new ActiveXObject('scripting.FileSystemObject');
- var re_prefix=new RegExp(">文章内容","gim");
- var re_suffix=new RegExp("短文学微信号:duanwenxuewang","gim");
- while(!WSH.StdIn.AtEndOfStream)
- {
- dir=WSH.StdIn.ReadLine();
- var count=0;
- dir.replace(/\\/g,function (){
- count++;
- });
- if(count<3||count>5) continue;
- getFiles(fso,dir);
- }
- //目录下文件
- function getFiles(fso,spDir){
- var fd=fso.GetFolder(spDir);
- var curDir=spDir.replace(/.*\\([^\\]*)/gi,'$1');
- var out =spDir.replace(/\\/gi,'/')+'/'+curDir+'.txt';
-
- var fc=new Enumerator(fd.files);
- var result='';
- for(;!fc.atEnd();fc.moveNext())
- {
- file=fc.item();
- ext=file.replace(/.*\\[^\\]*?([^.]*)$/,'$1');
- if(ext!='txt') continue;
- fo=fso.OpenTextFile(file,1);
- var flag=0;
- while(!fo.AtEndOfStream)
- {
- line=fo.ReadLine();
- if(!line||line.match(/^\s+$/)) continue;
- if (line.match(re_suffix)) break;
- if(flag==1) result+=line+'\r\n';
- if(line.match(re_prefix)) flag=1;
- }
- fo.close();
- result+='\r\n';
- }
- fo=fso.OpenTextFile(out,2,true);
- fo.Write(result);
- fo.close();
- }
复制代码
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |