中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-09-27 16:39
共 47,813 主题排行 / 349,918 发帖 / 今日 0 篇 / 48,276 会员排行
DOS批处理 & 脚本技术(批处理室) » 求助,数据结构的转换问题
可打印版本  1,911 / 16
第1楼 beyond125 发表于 2008-04-07 14:10
初级用户 发帖 35 积分 92
求助,数据结构的转换问题
各位大虾你好,我有个数据结构转换的问题,请各位帮忙,这里先谢谢了
我现在有一个上传的文本文件,文件名为1.loc 现取部分数据,格式如下:
LocateMode,FileIndex,Depth,LocateCurrent,PcmCurrent,PcmPhase,Signal,UTC,LatitudeAngle,LatitudeDirection,LongitudeAngle,LongitudeDirection,GpsFix,NumberSatellites,HorizontalDilution,AltitudeValue,AltitudeUnits,GeoidHeightValue,GeoidHeightUnits,DgpsTime,DgpsStationId,TimeIndicator
ELCD,1,1.37,0.69,0.08,150.01,0.00,141630.00,0.00,0,0.00,0,0,0,0.00,0.00,0,0.00,0,0,0,0
ELCD,2,1.39,0.50,0.04,158.08,0.00,141633.00,0.00,0,0.00,0,0,0,0.00,0.00,0,0.00,0,0,0,0
ELCD,3,2.19,0.38,0.04,15.94,0.00,141635.00,0.00,0,0.00,0,0,0,0.00,0.00,0,0.00,0,0,0,0
ELF,14,0.81,53.23,1.41,0.00,0.00,150520.00,0.00,0,0.00,0,0,0,0.00,0.00,0,0.00,0,0,0,0
ELF,15,0.71,47.25,1.37,0.00,0.00,150522.00,0.00,0,0.00,0,0,0,0.00,0.00,0,0.00,0,0,0,0

现在我想将其中的LocateMode字段下的所有ELCD模式里的FileIndex字段,Depth字段,PcmCurrnt字段下的数据提出来,变为如下结构,并输出成1.csv文本文件
1.csv文本文件格式如下
Log Distance 4Hz 4Hz Depth
# (m) (mA) (dBmA) (cm)
1, , 80, 38.06179974, 137,
2, , 40, 32.04119983, 139,
3, , 40, 32.04119983, 219,

注:上面的1.csv文件是以逗号做为分隔符,在这个文件里的log字段就是1.loc文件里的FileIndex字段,Distance字段是空出的字段名,4Hz(mA)字段就是1.loc文件里的PcmCurrent字段乘以1000得到的,4Hz(dBmA)字段是前面4Hz(mA)这个字段的数据取对数,再乘以20得到的。(即20*lg(前一列的数据)),Depth(cm)字段就是1.loc文件中的Depth字段的数据乘以100

我想问用批处理或者vbs如何实现这种转换。我在这里再次先谢谢各位网友大虾们。

[ Last edited by beyond125 on 2008-4-7 at 04:31 PM ]
第2楼 beyond125 发表于 2008-04-07 14:26
初级用户 发帖 35 积分 92
求助,数据结构的转换问题
各位大虾你好,我有个数据结构转换的问题,请各位帮忙,这里先谢谢了
我现在有一个文本文件,文件名为1.loc 现取部分数据,格式如下:
LocateMode,FileIndex,Depth,LocateCurrent,PcmCurrent,PcmPhase,Signal,UTC,LatitudeAngle,LatitudeDirection,LongitudeAngle,LongitudeDirection,GpsFix,NumberSatellites,HorizontalDilution,AltitudeValue,AltitudeUnits,GeoidHeightValue,GeoidHeightUnits,DgpsTime,DgpsStationId,TimeIndicator
ELCD,1,1.37,0.69,0.08,150.01,0.00,141630.00,0.00,0,0.00,0,0,0,0.00,0.00,0,0.00,0,0,0,0
ELCD,2,1.39,0.50,0.04,158.08,0.00,141633.00,0.00,0,0.00,0,0,0,0.00,0.00,0,0.00,0,0,0,0
ELCD,3,2.19,0.38,0.04,15.94,0.00,141635.00,0.00,0,0.00,0,0,0,0.00,0.00,0,0.00,0,0,0,0
ELF,14,0.81,53.23,1.41,0.00,0.00,150520.00,0.00,0,0.00,0,0,0,0.00,0.00,0,0.00,0,0,0,0
ELF,15,0.71,47.25,1.37,0.00,0.00,150522.00,0.00,0,0.00,0,0,0,0.00,0.00,0,0.00,0,0,0,0

现在我想将其中的LocateMode字段下的所有ELCD模式里的FileIndex字段,Depth字段,PcmCurrnt字段下的数据提出来,变为如下结构,并输出成1.csv文本文件
1.csv文本文件格式如下
Log Distance 4Hz 4Hz Depth
# (m) (mA) (dBmA) (cm)
1, , 80, 38.06179974, 137,
2, , 40, 32.04119983, 139,
3, , 40, 32.04119983, 219,

注:下面的1.csv文件是以逗号为分隔符,在这个文件里的log字段就是1.loc文件里的FileIndex字段,Distance字段是空出的字段名,4Hz(mA)字段就是1.loc文件里的PcmCurrent字段乘以1000得到的,4Hz(dBmA)字段是前面4Hz(mA)这个字段的数据取对数,再乘以20得到的。(即20*log(前一列的数据)),Depth(cm)字段就是1.loc文件中的Depth字段的数据乘以100

这里想说,用批处理或者vbs如何实现这种转换。我先谢谢各位网友大虾们。
第3楼 abcd 发表于 2008-04-07 14:31
银牌会员 发帖 739 积分 1,436
log是自然对数,还是??
第4楼 abcd 发表于 2008-04-07 15:07
银牌会员 发帖 739 积分 1,436
一帖多发,扣分。
第5楼 beyond125 发表于 2008-04-07 16:30
初级用户 发帖 35 积分 92
log是以10为底的常用对数!!!
第6楼 abcd 发表于 2008-04-07 16:31
银牌会员 发帖 739 积分 1,436


自己修改该测试一下吧
第7楼 beyond125 发表于 2008-04-07 16:32
初级用户 发帖 35 积分 92
谢谢,我试试
第8楼 beyond125 发表于 2008-04-07 16:50
初级用户 发帖 35 积分 92
你好,为什么,在log调用上出现了错误, 显示的是无效的过程和参数:"log",显示代码是:800A0005
第9楼 beyond125 发表于 2008-04-07 16:51
初级用户 发帖 35 积分 92
还有,如果用批处理如何的实现!!
第10楼 abcd 发表于 2008-04-07 16:55
银牌会员 发帖 739 积分 1,436
只测试了
LocateMode,FileIndex,Depth,LocateCurrent,PcmCurrent,PcmPhase,Signal,UTC,LatitudeAngle,LatitudeDirection,LongitudeAngle,LongitudeDirection,GpsFix,NumberSatellites,HorizontalDilution,AltitudeValue,AltitudeUnits,GeoidHeightValue,GeoidHeightUnits,DgpsTime,DgpsStationId,TimeIndicator
ELCD,1,1.37,0.69,0.08,150.01,0.00,141630.00,0.00,0,0.00,0,0,0,0.00,0.00,0,0.00,0,0,0,0
ELCD,2,1.39,0.50,0.04,158.08,0.00,141633.00,0.00,0,0.00,0,0,0,0.00,0.00,0,0.00,0,0,0,0
ELCD,3,2.19,0.38,0.04,15.94,0.00,141635.00,0.00,0,0.00,0,0,0,0.00,0.00,0,0.00,0,0,0,0
ELF,14,0.81,53.23,1.41,0.00,0.00,150520.00,0.00,0,0.00,0,0,0,0.00,0.00,0,0.00,0,0,0,0
ELF,15,0.71,47.25,1.37,0.00,0.00,150522.00,0.00,0,0.00,0,0,0,0.00,0.00,0,0.00,0,0,0,0

,似乎没问题。

用批处理的话,能解决log算法,就简单了。
第11楼 beyond125 发表于 2008-04-07 17:03
初级用户 发帖 35 积分 92
输出文档只显示循环了十次,能不能自动搜索文件的行数,然后定位输出!!

我的原始部分文件也就是1.loc文件,数据如下,用你的程序运行后就出错了.LocateMode,FileIndex,Depth,LocateCurrent,PcmCurrent,PcmPhase,Signal,UTC,LatitudeAngle,LatitudeDirection,LongitudeAngle,LongitudeDirection,GpsFix,NumberSatellites,HorizontalDilution,AltitudeValue,AltitudeUnits,GeoidHeightValue,GeoidHeightUnits,DgpsTime,DgpsStationId,TimeIndicator
ELCD,33,0.49,0.39,0.03,43.52,0.00,150603.00,0.00,0,0.00,0,0,0,0.00,0.00,0,0.00,0,0,0,0
ELCD,34,0.49,0.43,0.03,45.62,0.00,150605.00,0.00,0,0.00,0,0,0,0.00,0.00,0,0.00,0,0,0,0
LFCD,35,13.77,0.01,0.02,59.29,0.00,150608.00,0.00,0,0.00,0,0,0,0.00,0.00,0,0.00,0,0,0,0
ELCD,36,0.91,1.72,0.08,70.81,0.00,150610.00,0.00,0,0.00,0,0,0,0.00,0.00,0,0.00,0,0,0,0
ELCD,37,0.85,1.90,0.19,358.32,0.00,150612.00,0.00,0,0.00,0,0,0,0.00,0.00,0,0.00,0,0,0,0
ELCD,38,1.09,2.04,0.20,355.08,0.00,150615.00,0.00,0,0.00,0,0,0,0.00,0.00,0,0.00,0,0,0,0
LFCD,39,12.81,0.02,0.07,163.66,0.00,150617.00,0.00,0,0.00,0,0,0,0.00,0.00,0,0.00,0,0,0,0
ELCD,40,14.98,0.03,0.03,109.56,0.00,150619.00,0.00,0,0.00,0,0,0,0.00,0.00,0,0.00,0,0,0,0
ELCD,41,2.36,1.41,0.39,352.90,0.00,150621.00,0.00,0,0.00,0,0,0,0.00,0.00,0,0.00,0,0,0,0
ELCD,42,1.56,0.57,0.12,258.26,0.00,150624.00,0.00,0,0.00,0,0,0,0.00,0.00,0,0.00,0,0,0,0
ELCD,43,1.07,0.77,0.04,273.01,0.00,150626.00,0.00,0,0.00,0,0,0,0.00,0.00,0,0.00,0,0,0,0
ELCD,44,14.98,1.98,0.12,178.76,0.00,150628.00,0.00,0,0.00,0,0,0,0.00,0.00,0,0.00,0,0,0,0
ELCD,45,0.29,0.05,0.00,184.40,0.00,150631.00,0.00,0,0.00,0,0,0,0.00,0.00,0,0.00,0,0,0,0
ELCD,46,1.08,5.93,0.09,4.63,0.00,150633.00,0.00,0,0.00,0,0,0,0.00,0.00,0,0.00,0,0,0,0
ELCD,47,2.12,6.04,0.25,182.56,0.00,150635.00,0.00,0,0.00,0,0,0,0.00,0.00,0,0.00,0,0,0,0
ELCD,48,2.11,9.19,0.14,4.38,0.00,150637.00,0.00,0,0.00,0,0,0,0.00,0.00,0,0.00,0,0,0,0
ELCD,49,0.82,3.03,0.05,5.67,0.00,150640.00,0.00,0,0.00,0,0,0,0.00,0.00,0,0.00,0,0,0,0
ELCD,50,0.70,0.07,0.00,166.25,0.00,150642.00,0.00,0,0.00,0,0,0,0.00,0.00,0,0.00,0,0,0,0
CPS,13,11.38,0.01,0.00,0.00,0.00,150517.00,0.00,0,0.00,0,0,0,0.00,0.00,0,0.00,0,0,0,0
ELF,14,0.81,53.23,1.41,0.00,0.00,150520.00,0.00,0,0.00,0,0,0,0.00,0.00,0,0.00,0,0,0,0
ELF,15,0.71,47.25,1.37,0.00,0.00,150522.00,0.00,0,0.00,0,0,0,0.00,0.00,0,0.00,0,0,0,0
ELF,16,0.74,41.34,1.50,0.00,0.00,150524.00,0.00,0,0.00,0,0,0,0.00,0.00,0,0.00,0,0,0,0
ELF,17,14.14,0.33,0.15,0.00,0.00,150526.00,0.00,0,0.00,0,0,0,0.00,0.00,0,0.00,0,0,0,0
ELCD,34,0.49,0.43,0.03,45.62,0.00,150605.00,0.00,0,0.00,0,0,0,0.00,0.00,0,0.00,0,0,0,0
LFCD,35,13.77,0.01,0.02,59.29,0.00,150608.00,0.00,0,0.00,0,0,0,0.00,0.00,0,0.00,0,0,0,0
ELCD,36,0.91,1.72,0.08,70.81,0.00,150610.00,0.00,0,0.00,0,0,0,0.00,0.00,0,0.00,0,0,0,0
ELCD,37,0.85,1.90,0.19,358.32,0.00,150612.00,0.00,0,0.00,0,0,0,0.00,0.00,0,0.00,0,0,0,0
ELCD,38,1.09,2.04,0.20,355.08,0.00,150615.00,0.00,0,0.00,0,0,0,0.00,0.00,0,0.00,0,0,0,0
LFCD,39,12.81,0.02,0.07,163.66,0.00,150617.00,0.00,0,0.00,0,0,0,0.00,0.00,0,0.00,0,0,0,0
ELCD,40,14.98,0.03,0.03,109.56,0.00,150619.00,0.00,0,0.00,0,0,0,0.00,0.00,0,0.00,0,0,0,0
第12楼 abcd 发表于 2008-04-07 17:08
银牌会员 发帖 739 积分 1,436
问题在ELCD,45,0.29,0.05,0.00,184.40,0.00,150631.00,0.00,0,0.00,0,0,0,0.00,0.00,0,0.00,0,0,0,0
这些行。对数的真数是不能为0的。

自己的数据问题

[ Last edited by abcd on 2008-4-7 at 05:11 PM ]
第13楼 beyond125 发表于 2008-04-07 17:14
初级用户 发帖 35 积分 92
对,我现在在找,谢谢你,我再试试!!!
第14楼 beyond125 发表于 2008-04-07 17:22
初级用户 发帖 35 积分 92
你好,能否将"ELCD"这几个字符,输出,输入文件名用对话框的形式表现出来,就不用用固定的文件名了.这样用vbs如何实现.
第15楼 knoppix7 发表于 2008-04-07 19:11
银牌会员 发帖 634 积分 1,287 来自 cmd.exe
参见 for /f帮助
1 2  下一页
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023