Board logo

标题: [文本处理] 批处理如何实现将多个txt文本每隔一行插入一行特定数据内容 [打印本页]

作者: nihaoareyou    时间: 2016-11-3 16:59     标题: 批处理如何实现将多个txt文本每隔一行插入一行特定数据内容

Txt隔行插入
【着急,跪求大神帮助】
很多TXT文件,特征如下:第一列为深度,第二列为含量
深度           含量
2601.11        5.2
2603.2        29.3
2639.64        29.9
如何能批量隔行插入一行数据,插入的深度数据介于上下深度之间的任意数值,含量值均为-999.25,如下:
深度                  含量
2601.11        5.2
深度A        -999.25
2603.2        29.3
深度B        -999.25
2639.64        29.9
深度C        -999.25
最终插入后的深度数据依次由小至大,含量数据均为-999.25。
作者: nihaoareyou    时间: 2016-11-3 18:04

求指导啊,大神
作者: pcl_test    时间: 2016-11-3 21:12

本帖最后由 pcl_test 于 2016-11-3 21:22 编辑

猜的
  1. //&cls&2>nul md "结果"&dir /a-d/b *.txt|cscript -nologo -e:jscript "%~f0"&pause&exit
  2. var fso=new ActiveXObject('Scripting.FileSystemObject');
  3. while(!WSH.StdIn.AtEndOfStream){
  4.     var line = WSH.StdIn.ReadLine();
  5.     fso.CreateTextFile('结果\\'+line,2).Write(fk(line));
  6. }
  7. WSH.echo('Done');
  8. function fk(f){
  9.     var text = fso.OpenTextFile(f, 1).ReadAll(), s='';
  10.     var head = text.match(/^\s*深度.+\n/);
  11.     if(head)s+=head[0];
  12.     var body = text.match(/-?\d[^\r\n]+/g).sort(function(a,b){
  13.         return a.split(/\s+/)[0]-b.split(/\s+/)[0]
  14.     });
  15.     if(body){
  16.         if(body.length>1){
  17.             for(var i=0;i<body.length-1;i++){
  18.                 var a=body[i].split(/\s+/)[0]*1;
  19.                 var b=body[i+1].split(/\s+/)[0];
  20.                 var t=b-a;
  21.                 if(t==0){
  22.                     s+=body[i]+'\r\n'+a+'       -999.25\r\n';
  23.                 }else{
  24.                     s+=body[i]+'\r\n'+((a+t*(Math.random()*0.9+0.1)).toFixed(2)+'       -999.25\r\n');
  25.                 }
  26.             }
  27.         }
  28.         s+=body[body.length-1]+'\r\n'+(body.pop().split(/\s+/)[0]*1+(Math.random()*9.9+0.1)).toFixed(2)+'       -999.25';
  29.     }
  30.     return s;
  31. }
复制代码

作者: nihaoareyou    时间: 2016-11-4 08:26

谢谢,两位大神
作者: nihaoareyou    时间: 2016-11-7 10:21

回复 4# pcl_test


    大神,还得麻烦您,我要是想深度段每隔0.01米插入一行,含量值还是-999.25,能实现吗?怎么修改代码啊?




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2