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

[文本处理] [已解决]批处理:按列分解并合并数值

txt文本格式如下:
2012001 881326479827982215376661104075627562215134770215904750475000205
2012002 852936741581825592693814730741583621314473062804000008756402580
2012003 423972451943972083497201350215721350461235862866864882866172386
2012004 011123111232234234345011123111230012012121000000000001123123236
2012005 256164905083831942972432324761681611502572248880866602720440400
......
每行前7个数值是时间码,后记录有63个数值,记为63列。现欲按列分为01-63个txt文本,并依次合并该列的前3行数值,结果如下:
01 txt:
2012003 8 8 4
2012004 8 4 0
2012005 4 0 2
......
(解释:第1列分解为
2012001 8
2012002 8
2012003 4
数值8、8、4合并,即为2012003 8 8 4。以此类推。)


63 txt:
2012003 5 0 6
2012004 0 6 6
2012005 6 6 0
......
恳望出手相助!
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

本帖最后由 思想之翼 于 2012-8-18 18:44 编辑

谢谢关注!标题确有几个相似的字眼,但实质要求大相径庭。

TOP

回复  思想之翼



之中的 2012003 是如何获取的
canyuexiaolang 发表于 2012-8-18 18:47



    2012003中的数值,是2012001、2012002与2012003第一列的数值合并。

TOP

解释:第1列分解为
2012001 8
2012002 8
2012003 4
数值8、8、4合并,即为2012003 8 8 4。以此类推。)

TOP

回复 8# apang


    您写的批处理代码帮了大忙,谢谢热心帮助!
现在运用中,有新的需求,恳望再次得到您的帮助:如何隔行合并数值?

例如:
txt文本格式如下:
2012001 881326479827982215376661104075627562215134770215904750475000205
2012002 852936741581825592693814730741583621314473062804000008756402580
2012003 423972451943972083497201350215721350461235862866864882866172386
2012004 011123111232234234345011123111230012012121000000000001123123236
2012005 256164905083831942972432324761681611502572248880866602720440400
......

1、上述例子中,第1列分解为
2012001 8
2012002 8
2012003 4
2012004 0
2012005 2
......
将第1列的隔行数值8、4、2合并,即为2012005 8 4 2。第2列...第63列以此类推。

2、此为隔1行,如果隔2-20行合并,批处理代码修改哪里?

TOP

回复 9# terse


     您写的批处理代码帮了大忙,谢谢热心帮助!
现在运用中,有新的需求,恳望再次得到您的帮助:如何隔行合并数值?

例如:
txt文本格式如下:
2012001 881326479827982215376661104075627562215134770215904750475000205
2012002 852936741581825592693814730741583621314473062804000008756402580
2012003 423972451943972083497201350215721350461235862866864882866172386
2012004 011123111232234234345011123111230012012121000000000001123123236
2012005 256164905083831942972432324761681611502572248880866602720440400
......

1、上述例子中,第1列分解为
2012001 8
2012002 8
2012003 4
2012004 0
2012005 2
......
将第1列的隔行数值8、4、2合并,即为2012005 8 4 2。第2列...第63列以此类推。

2、此为隔1行,如果隔2-20行合并,批处理代码修改哪里?

TOP

回复 13# apang


谢谢您的热心帮助!可能是我叙述不明,您写的批处理代码,与现实需求有点出入。比如:下列数据的第一列,隔2行数据合并,得到的结果是:
0000005 2 1 1
0000007 1 1 2
0000009 1 2 9
缺少
0000006 5 5 2
0000008 5 2 2
恳望再次得到您的帮助!

举例数据:
0000001 200042888206608608082244402222200042042422511195555559915915155
0000002 569249703501461794279125205143143423750275684044210618088049004
0000003 144030339296252252181122818339290616616707033929000009767767818
0000004 580130134636796918291368118354252752970297479029860863043081008
0000005 123584902511362473958321160124331342251716852679042480055862867
0000006 217956391788067623451217956157346845221431000000248027956352540
0000007 227759611931193648486441131055735573022224222240444804480935355
0000008 226002048804880224688222442042204220664022553115555555555775955
0000009 942051319406495273516142051531422493271516055500680043504502000

TOP

本帖最后由 思想之翼 于 2013-1-23 10:51 编辑

回复 15# terse

谢谢关注!试验一下,发现数据合并结果不对,整体错位了1行。
结果为
0000006 2 1 1
0000007 5 5 2
0000008 1 1 2
0000009 5 2 2
应为
0000005 2 1 1
0000006 5 5 2
0000007 1 1 2
0000008 5 2 2
另,合并后的结果能否新建一个文件夹?

TOP

本帖最后由 思想之翼 于 2013-2-22 21:10 编辑

回复 18# apang

谢谢!VBA代码完美解决问题。研究您的代码,想扩展运用,但是遇到了问题:
1、此代码得到的单个txt文本的数据格式是0000001 4 3 9 2,若数据格式改为0000001 4392,如何修改代码?
2、此代码处理后有01-63个txt文本,若只产生1个txt文本,合并分散在01-63个txt文本的数据,数据格式为0000001 4392 2135 3695 2587 ......9987,第一列0000001是时间序号,第二列4392是01.txt的数值,第三列2135是02.txt的数值......第64列9987是63.txt的数值,这又该如何修改代码?
恳望得到您的帮助!

TOP

本帖最后由 思想之翼 于 2013-2-23 14:28 编辑

回复 20# apang


    谢谢!您的代码给我很大启发。将63个文本合并的代码,是在已经产生63个文本后的情况下使用的,能否在用18楼的代码处理数据时,不分成63个文本,直接产生紧凑型的数据(即4321,非4 3 2 1),并存放在1个文本中?

TOP

返回列表