本帖最后由 WHY 于 2023-1-9 14:27 编辑
回复 9# xp3000
试试- @if(0)==(0) echo off
- cd /d "%~dp0"
- set "dstDir=Result"
- md "%dstDir%" 2>nul
- dir /b *.log | cscript //nologo //e:jscript "%~f0" "%dstDir%"
- pause & exit /b
- @end
- var dstDir = WSH.Arguments(0); //目标目录
- var fso = new ActiveXObject('Scripting.FileSystemObject');
- while( !WSH.StdIn.AtEndOfStream ){
- var file1 = WSH.StdIn.ReadLine(); //log文件名
- var file2 = file1.replace(/\.log$/i, '.txt'); //txt文件名
- if( !fso.FileExists(file2) ) continue; //判断txt文件是否存在
- var reg = getText(file1); //log文本用"|"拼接
- var f = fso.OpenTextFile(file2, 1);
- var str = f.ReadAll();
- f.Close();
- var i = 0;
- str = str.replace(
- new RegExp( '^(' + reg + ')((?:\\r?\\n|$)(?:\\1(?:\\r?\\n|$))*)', 'igm' ),
- function(s0, s1, s2){
- return '' + ++i + '、《' + s1 + '》' + s2;
- }
- )
- fso.OpenTextFile(dstDir + '\\' + file2, 2, true).Write(str); //保存
- }
- function getText(file){
- var f = fso.OpenTextFile(file, 1);
- var arr = [], map = [];
- while( !f.AtEndOfStream ){
- var s = f.ReadLine();
- if(/^\s*$/.test(s)) continue;
- if(!map.hasOwnProperty(s)){
- var s1 = s.replace(/[\\|.^$()[\]{}*?+-]/g, '\\$&'); //字符转义
- arr.push(s1);
- map[s] = true; //去重复
- }
- }
- f.Close();
- return arr.join('|');
- }
复制代码 |