假设 你的文本文件名字为 微信聊天.txt
假设文本行开头的日期格式为:
年/月/日 时:分:秒 或者为 年/月/日 时:分
或者为 年-月-日 时:分 或者为 年-月-日 时:分:秒
例如 2018-6-16 21:02:30 或 2018-/6/16 21:02
如果任然不行,请跟帖并且发附件说明- @if(0)==(0) echo off
- type "微信聊天.txt" | cscript //nologo //e:jscript "%~f0" > output.txt
- pause & goto :EOF
- @end
-
- var map = [];
- while(!WSH.StdIn.AtEndOfStream) {
- var s = WSH.StdIn.ReadLine(); //逐行读取文本
- var m = s.match(/^(\d{4}[/-]\d{1,2}[/-]\d{1,2} \d{1,2}(?::\d{1,2}){1,2})\s+(\S+).+/); //匹配日期格式的行
- if(!m) break; //不匹配就忽略该行
- var dt = m[1].replace(/(\D)(\d)(?=\D|$)/g, '$10$2'); //日期中的数字补0
- if(!map[m[2]]) {
- map[m[2]] = [];
- map[m[2]][0] = dt; //赋值二维数组
- map[m[2]][1] = m[0];
- } else if(dt > map[m[2]][0]) {
- map[m[2]][0] = dt; //日期大的话,重新赋值
- map[m[2]][1] = m[0];
- }
- }
-
- for(var key in map) WSH.Echo(map[key][1]);
复制代码
|