标题: [文本处理] 批处理如何实现将多个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 编辑
猜的- //&cls&2>nul md "结果"&dir /a-d/b *.txt|cscript -nologo -e:jscript "%~f0"&pause&exit
-
- var fso=new ActiveXObject('Scripting.FileSystemObject');
- while(!WSH.StdIn.AtEndOfStream){
- var line = WSH.StdIn.ReadLine();
- fso.CreateTextFile('结果\\'+line,2).Write(fk(line));
- }
- WSH.echo('Done');
-
- function fk(f){
- var text = fso.OpenTextFile(f, 1).ReadAll(), s='';
- var head = text.match(/^\s*深度.+\n/);
- if(head)s+=head[0];
- var body = text.match(/-?\d[^\r\n]+/g).sort(function(a,b){
- return a.split(/\s+/)[0]-b.split(/\s+/)[0]
- });
- if(body){
- if(body.length>1){
- for(var i=0;i<body.length-1;i++){
- var a=body[i].split(/\s+/)[0]*1;
- var b=body[i+1].split(/\s+/)[0];
- var t=b-a;
- if(t==0){
- s+=body[i]+'\r\n'+a+' -999.25\r\n';
- }else{
- s+=body[i]+'\r\n'+((a+t*(Math.random()*0.9+0.1)).toFixed(2)+' -999.25\r\n');
- }
- }
- }
- s+=body[body.length-1]+'\r\n'+(body.pop().split(/\s+/)[0]*1+(Math.random()*9.9+0.1)).toFixed(2)+' -999.25';
- }
- return s;
- }
复制代码
作者: 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 |