中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [求助]通过原始文本文件转换成另一种格式的文本文件
« [1] [2] [3] »
作者:
标题: [求助]通过原始文本文件转换成另一种格式的文本文件 上一主题 | 下一主题
dhlmdsnw
初级用户





积分 127
发帖 59
注册 2008-1-29
状态 离线
『楼 主』:  [求助]通过原始文本文件转换成另一种格式的文本文件

我这边有一个原始文本文件:01067-01090800-080122-01.txt,下面简称a
要把里面的内容换成另一种文本文件的格式:140820080122001.txt,下面简称b
如何批处理操作?——恳请各位大虾帮忙。。。。不胜感谢!
注意几点:
1.b文件字节不能有变化,即使是后面的空白,也要保留。
2.文件名中都包含当天日期的信息,如080122或者20080122
3.b文件中的最后一行是汇总行:只有三个地方有变动,一个是顺序号:8,一个是汇总数据:17750,一个是汇总编号:7。——很容易看出来的——其他都不变。a文本文件如下:
1147666                  1407002601001238877           000000000270200      352201197511250011  林书文              20080122000106701080001003    797503              01090800                                                   
1147669                  1407002501000591238           000000000250000      352226197308020023  蒋璟                20080122000106701080000977    797503              01090800                                                   
1147670                  1407002501000591238           000000000250000      352226197308020023  蒋璟                20080122000106701080000981    797503              01090800                                                   
1147671                  1407002601001236701           000000000254800      352221196007114118  黄尚灯              20080122000106701080000945    797503              01090800                                                   
1147672                  1407002501000591114           000000000250000      352202800608331     陈爱国              20080122000106701080000931    797503              01090800                                                   
1147673                  1407002501000591114           000000000250000      352202800608331     陈爱国              20080122000106701080000963    797503              01090800                                                   
1148256                  1407700601101953789           000000000250000      352201197301142639  吴丽玉              20080122000106701080001017    797503              01090800                                                   



b文本文件如下:
21408000502021407002601001238877300000100000000000270200000000000000000011                    000000000林书文                                               
21408000502021407002501000591238300000200000000000250000000000000000000011                    000000001蒋璟                                                
21408000502021407002501000591238300000300000000000250000000000000000000011                    000000002蒋璟                                                
21408000502021407002601001236701300000400000000000254800000000000000000011                    000000003黄尚灯                                               
21408000502021407002501000591114300000500000000000250000000000000000000011                    000000004陈爱国                                               
21408000502021407002501000591114300000600000000000250000000000000000000011                    000000005陈爱国                                               
21408000502021407700601101953789300000700000000000250000000000000000000011                    000000006吴丽玉                                               
11408000502021408010011200362414300000800000000001775000000000000000000072

2008-1-29 02:08
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 2 楼』:  

资质愚钝,实在看不出a、b两个文件的数据有什么联系。

2008-1-29 12:26
查看资料  发短消息 网志   编辑帖子  回复  引用回复
dhlmdsnw
初级用户





积分 127
发帖 59
注册 2008-1-29
状态 离线
『第 3 楼』:  

不好意思,可能是我没讲清楚
b文件中每一行(除了最后一行)前面的:140800050202是固定的,后面1407002601001238877是变动的,来源于a文件,再后面的3是固定的,再后面的
000001代表流水号,把它看成行号也可,如果是第11行,那么表达为000011,再后面的00是固定的,再后面的000000000270200是变动的,来源于a文件,再后面的00000000000000000011                    (包括空白)都是固定的,再后面的:000000000又是一个流水号,规则跟前一个一样,只不过这个流水号是从0开始的。最后的:林书文,是变动的,来源于a文件。
不知道这样讲可以清楚吗?——希望各位大大帮帮新人丫。。。谢了先!!!

2008-1-29 14:16
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
dhlmdsnw
初级用户





积分 127
发帖 59
注册 2008-1-29
状态 离线
『第 4 楼』:  

对了b文件中林书文后面的空白                                               也是要保留的,如果是四个字的人名,那么占用空白,也就是说“人名+空白”所占用的总数是不变的,我不知道这个“总数”在文本文件中是不是字节的概念,但是有一个方法可以验证,就是Ctrl+a全选,全选后每一行都被蓝色覆盖的满满的每有留一点空白的意思。
b文件中最后一行汇总行除了我说的那3个地方有变动外,其他的文本都不变。

在此先谢谢二楼大虾的关注。。。

2008-1-29 14:25
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
dhlmdsnw
初级用户





积分 127
发帖 59
注册 2008-1-29
状态 离线
『第 5 楼』:  

二楼的大虾有QQ吗?——我可加你,然后把文件传过去给你啊。。。
五颗星耶。。。肯定是不世出的高手啊。。。。

2008-1-29 14:32
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
dhlmdsnw
初级用户





积分 127
发帖 59
注册 2008-1-29
状态 离线
『第 6 楼』:  

再次提醒:a文件的每一行都是从1147开始的,在第二个1147的前面有一个黑色高亮的小方块(类似于光标固定往右拖一个字节的效果,只不过它是黑色的)来做为分隔符。——实在不好意思,第一次发帖,难免忘东忘西的。。。请各位位大大原谅则个。。。

2008-1-29 14:46
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 7 楼』:  

上面B文件最后一行没处理  不知道是不是这个意思
@echo off
set m=0
setlocal enabledelayedexpansion
for /f "tokens=2,3,5" %%i in (a.txt) do (
               set/a n+=1
               set src1=%%i
               set src2=%%j
               set src3=%%k
               set var=00000!n!
               set var=!var:~-6!
               set vcr=00000000!m!
               set vcr=!vcr:~-9!
               >>b.txt echo.140800050202!src1!3!var!00!src2!000000000000000011                    !vcr!!src3!                                               
               set/a m+=1
)
pause



简单!简单!再简单!
2008-1-29 17:34
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
flying008
中级用户





积分 245
发帖 103
注册 2006-6-30
状态 离线
『第 8 楼』:  

变量延迟循环变量 ……让偶够学一阵的了……

2008-1-29 17:56
查看资料  发短消息 网志   编辑帖子  回复  引用回复
dhlmdsnw
初级用户





积分 127
发帖 59
注册 2008-1-29
状态 离线
『第 9 楼』:  

哇,7楼的大大好厉害哦。。。基本已经有模型。。。
不要怪我贪心哦,还是有三个问题:
1.人名为两个字时如“蒋璟”,我在Ctrl+C全选时发现,后面会出现两个字节的空白,也就说格式与其他的不一致,请帮助调成一致。另外请考虑“人名”是变动的情况下如何也能保持一致,(例如:四个字、甚至出现外国人名字时的情况)。
2.b文件名是否能调成"14080005022080129001.txt",其中14080005022是固定的,080129是变动的,体现当天日期(例如:明天30号,就生成14080005022080130001.txt,如果当天是2月1号就生成14080005022080201001.txt),最后的001是流水号,代表我同一天做了这种同样的操作做了几次(例如:我的a1文件生成了b1,那么b1的文件名就是14080005022080130001.txt,接着我又用a2的文件生成了b2,那么b2的文件名就是14080005022080130002.txt)
3.当然还是恳请各位大大帮助把最后汇总的一行添加进文件中。
再次感谢7楼的大虾帮我解决了很大的一部分麻烦,고 맙 습 니 다 !(谢谢!)
请各位大大再展神威啊。。。。。
谢了先!

2008-1-29 21:03
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
dhlmdsnw
初级用户





积分 127
发帖 59
注册 2008-1-29
状态 离线
『第 10 楼』:  

再次补充:对于b的文件名最后的流水号能和a的文件名的流水号(a文件名最后两个"01")保持一致就好了,只不过b是用三位数如001来做流水号,而a是用两位数01来做流水号。~~唉。。。真不知道各位大大还没碰到我这种新手了。。。实在不好意思,各位大大加油啊。。。。

2008-1-29 21:13
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
terse
银牌会员





积分 2404
发帖 946
注册 2005-9-8
状态 离线
『第 11 楼』:  

你把B.TXT换成14080005022%date:~0,4%%date:~5,2%%date:~8,2%.TXT就是固定号加日期名了 至于00X序列如果是一次处理多个文件还是可以的,单独运行那就不行,还有最后一行的信息是从那里来的你都没说清楚啊



简单!简单!再简单!
2008-1-29 21:49
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
dhlmdsnw
初级用户





积分 127
发帖 59
注册 2008-1-29
状态 离线
『第 12 楼』:  

先回复11楼大大的,b文件中的最后一行是汇总行,在这个例子中只有三个地方有变动,一个是顺序号:8,一个是汇总数据:17750,一个是汇总编号:7。也就是说前面114080005020214080100112003624143是固定的,后面的000008是变动的,是前面一行000007流水号往下填的(例如:前面一行是000011,后面一行这个地方就是000012,如果前面一行是000111,那这个地方就变成000112),再后面的00是固定的,而后面的00000000177500又是变动的,00000000177500是前面所有行对应位置数据的汇总数如(第1行对应位置的数据是000000000270200+第1行对应位置的数据是000000000250000+....+第7行对应位置的数据是000000000250000=00000000177500),再后面的000000000000000007是变动的,用来表示前面总共有几行(例如:除最后一行外,前面总共有100行,那这个位置数据就该为000000000000000100),最后的2                                                                                  (包括空白)都是固定的。——谢谢11楼大大的关注与建议。。。非常感谢!

2008-1-29 23:13
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
dhlmdsnw
初级用户





积分 127
发帖 59
注册 2008-1-29
状态 离线
『第 13 楼』:  

试了11楼大虾的代码,果然非常棒,有一个小问题,还请帮助解决:我需要的日期格式是080129,用了大大的代码是出现20080129能否把前面的20去掉呢?再次感谢各位大大的关注。。。。

2008-1-29 23:21
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
zh159
金牌会员




积分 3687
发帖 1467
注册 2005-8-8
状态 离线
『第 14 楼』:  



  Quote:
Originally posted by dhlmdsnw at 2008-1-29 23:21:
试了11楼大虾的代码,果然非常棒,有一个小问题,还请帮助解决:我需要的日期格式是080129,用了大大的代码是出现20080129能否把前面的20去掉呢?再次感谢各位大大的关注。。。。

%date:~0,4%改为%date:~2,2%



2008-1-29 23:24
查看资料  发短消息 网志   编辑帖子  回复  引用回复
dhlmdsnw
初级用户





积分 127
发帖 59
注册 2008-1-29
状态 离线
『第 15 楼』:  

哇噻,大虾啊。。。谢谢14楼的大虾。。。又推进了一步了。。。非常感谢!!!
还请继续关注啊。。。。
小妹在此谢过各位大大了。。。
我快看到胜利的曙光了。。。
果然藏龙卧虎啊。。。
努力学习各位的精华。。。。

2008-1-30 00:26
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] [3] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: