标题: [文本处理] 批处理如何在TXT文件里怎样有条件的合并行? [打印本页]
作者: andersen12 时间: 2011-11-21 16:27 标题: 批处理如何在TXT文件里怎样有条件的合并行?
原文
姓名 日期 打卡时间
员工1 2011-10-25 08:54
员工2 2011-10-25 08:17
员工3 2011-10-26 08:10
员工1 2011-10-25 17:35
员工2 2011-10-26 17:14
员工3 2011-10-25 17:34
员工1 2011-11-25 08:54
员工2 2011-11-25 08:17
员工3 2011-11-26 08:10
员工1 2011-11-25 17:35
员工2 2011-11-26 17:14
员工3 2011-11-25 17:34
要求合并后的效果
姓名 日期 上班时间 下班时间
员工1 2011-10-25 08:54 17:35
员工2 2011-10-25 08:17 17:14
员工3 2011-10-26 08:10 17:34
员工1 2011-11-25 08:54 17:35
员工2 2011-11-25 08:17 17:14
员工3 2011-11-26 08:10 17:34
作者: powerbat 时间: 2011-11-21 23:13
楼主这个好像是从Excel或数据库中导出来的?其实用原生方法更简单,为什么要变成文本?- @set @n=0//&cscript.exe -e:jscript "%~f0"&exit /b
-
- file = "考勤.txt";
-
- fso = new ActiveXObject("Scripting.FileSystemObject");
- s = fso.OpenTextFile(file).ReadAll();
- s = s.replace(/^\s+|\s*\n\s*/g,'\r\n').replace(/ +/g,',');
- temp = '#'+file;
- ts = fso.OpenTextFile(temp, 2, true);
- ts.write(s); ts.close();
-
- strConnect = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=.;'
- + 'Extended Properties="text;HDR=yes;FMT=Delimited;";';
- AdoCnn = new ActiveXObject("ADODB.Connection");
- AdoCnn.ConnectionString = strConnect;
- AdoCnn.Open();
- s = "姓名,日期,上班时间,下班时间\r\n";
- AdoRs = new ActiveXObject("ADODB.Recordset");
- AdoRs.Open("SELECT [a.姓名],[a.日期],[a.打卡时间],[b.打卡时间] from ["+temp+"] as a inner join ["+temp+"] as b ON (a.[姓名]=b.[姓名] AND a.[日期]=b.[日期] AND a.[打卡时间]<b.[打卡时间])", AdoCnn, 3);
- s += AdoRs.GetString(2, AdoRs.RecordCount, ",", "\r\n");
- fso.OpenTextFile('result.csv', 2, true).write(s);
- AdoRs.Close();
- AdoCnn.Close();
- fso.DeleteFile(temp);
复制代码
作者: andersen12 时间: 2011-11-22 08:53
非常感谢2楼的回答!其实原文数据我是从考勤机里导出来的,已经做过一些处理了。我刚开始学编程,对于2楼回复的代码还是不能完全理解,我会继续努力向2楼学习,再次感谢!
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |