[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 批处理如何实现将多个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。
1

评分人数

求指导啊,大神

TOP

本帖最后由 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. }
复制代码

TOP

谢谢,两位大神

TOP

回复 4# pcl_test


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

TOP

返回列表