找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 24148|回复: 4

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

[复制链接]
发表于 2016-11-3 16:59:17 | 显示全部楼层 |阅读模式
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。

评分

参与人数 1PB -6 收起 理由
pcl_test -6 未按版规发帖

查看全部评分

 楼主| 发表于 2016-11-3 18:04:53 | 显示全部楼层
求指导啊,大神
发表于 2016-11-3 21:12:05 | 显示全部楼层
本帖最后由 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. }
复制代码
 楼主| 发表于 2016-11-4 08:26:30 | 显示全部楼层
谢谢,两位大神
 楼主| 发表于 2016-11-7 10:21:20 | 显示全部楼层
回复 4# pcl_test


    大神,还得麻烦您,我要是想深度段每隔0.01米插入一行,含量值还是-999.25,能实现吗?怎么修改代码啊?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 12:11 , Processed in 0.012590 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表