中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-25 22:39
47,812 主题排行 / 349,910 发帖 / 今日 0 篇 / 48,264 会员排行
DOS批处理 & 脚本技术(批处理室) » 文本内容的拼接
可打印版本  5,384 / 21
第1楼 lotus516 发表于 2006-09-22 06:22
高级用户 发帖 246 积分 551
文本内容的拼接
问题是这样的,有一个文本文件,里而的内容如下
accident
n.意外遭遇,事故;意外(因素)
across
prep.横过,越过;在的对面 ad.横过,穿过
active
adj.活跃的,敏捷的,积极的;在活动中的
advertise
vt.公告,公布;为...做广告 vi.登广告
after
prep.在...以后;在...后面 adv.以后,后来
我怎么才能把它放到另外一个文件中,其内容为:
accident n.意外遭遇,事故;意外(因素)
across prep.横过,越过;在的对面 ad.横过,穿过
active adj.活跃的,敏捷的,积极的;在活动中的
advertise vt.公告,公布;为...做广告 vi.登广告
after prep.在...以后;在...后面 adv.以后,后来
看了几个差不多的贴子,想自已搞定,结果弄了一天多也不成!!!
高手谢谢!!!!!

[ Last edited by lotus516 on 2006-9-22 at 07:34 ]
第2楼 namejm 发表于 2006-09-22 06:59
荣誉版主 发帖 1,737 积分 5,226 来自 成都
  可以使用如下代码测试:

  哎,我倒,刚回贴就发现楼主的问题就换了,十分郁闷。

  另外,建议楼主把这个含义模糊的标题改一下,使得别人一眼就能从标题了解到问题的大概内容。

[ Last edited by namejm on 2006-9-22 at 07:15 ]
第3楼 lotus516 发表于 2006-09-22 07:30
高级用户 发帖 246 积分 551
呵呵,namejm多谢了!!
发完贴后觉得可能用数字代替不能更好说明问题就改成原文了!还是多谢了!!!
第4楼 vkill 发表于 2006-09-22 07:35
金牌会员 发帖 1,744 积分 4,103 来自 甘肃.临泽
要我的话,我想用 skip 来实现
第5楼 lotus516 发表于 2006-09-22 07:59
高级用户 发帖 246 积分 551
一个问题不太明白!
set /a mod=!first!%%2
这句是什么意思?这个%%2的变量??
第6楼 3742668 发表于 2006-09-22 08:21
荣誉版主 发帖 718 积分 2,013
『第 4 楼』:

要我的话,我想用 skip 来实现

用skip太麻烦了,不建议使用。
『第 5 楼』: 一个问题不太明白!

set /a mod=!first!%%2
这句是什么意思?这个%%2的变量??

%%表示除,mod的值为余数。


第7楼 vkill 发表于 2006-09-22 08:29
金牌会员 发帖 1,744 积分 4,103 来自 甘肃.临泽
3742668 斑竹的代码看不懂。汗

不过想问下要是取前6行为1行,用skip好吗?
第8楼 lotus516 发表于 2006-09-22 08:42
高级用户 发帖 246 积分 551
3742668 斑竹的代码好强!!!!
学到了,获益非浅!!!!

[ Last edited by lotus516 on 2006-9-22 at 08:45 ]
第9楼 3742668 发表于 2006-09-22 08:46
荣誉版主 发帖 718 积分 2,013
『第 7 楼』:

3742668 斑竹的代码看不懂。汗

不过想问下要是取前6行为1行,用skip好吗?

取前6行为1行也没必要用skip,那样的话代码量大多了。在启用延迟环境变量后直接从for里面用上一句set str=!str! %%i就可以了:


至于6F的代码,你带着算法去看就会觉得很简单了:
若str变量的值为空,则把当前行的内容保存到str中。(单数行)
若str变量的值非空,则打印str变量的内容+空格+当前行的内容,然后更改str变量的值为空。(双数行)
第10楼 namejm 发表于 2006-09-22 08:57
荣誉版主 发帖 1,737 积分 5,226 来自 成都
  由于楼主更改了问题的内容,再加上本人临时有事外出,导致我在第二楼的代码修改之后没有经过认真的测试就匆忙贴出来了,其中有不少冗余代码,现在贴一段修正之后的代码,效率应该提升了不少,请楼主测试:
第11楼 namejm 发表于 2006-09-22 08:59
荣誉版主 发帖 1,737 积分 5,226 来自 成都
  3742668版主的代码实在是太简洁了,效率也更高。受教了。
第12楼 lotus516 发表于 2006-09-22 09:03
高级用户 发帖 246 积分 551
3742668 斑竹,7楼的意思应为每六行为一行,再六行为第二行吧,......!9楼的代码好像不能实现六行为一行,而应是所有的为一行吧???
呵呵刚才把楼层都看错了!!!

[ Last edited by lotus516 on 2006-9-22 at 09:33 ]
第13楼 lotus516 发表于 2006-09-22 09:04
高级用户 发帖 246 积分 551
多谢namejm如些热心!!!!!!我去看看!!二楼的代码也行!!!
第14楼 3742668 发表于 2006-09-22 09:13
荣誉版主 发帖 718 积分 2,013
『第 11 楼』:

  3742668版主的代码实在是太简洁了,效率也更高。受教了。


过奖了,各有各的好,只不过是追求效率与追求扩展性之间的差别罢了。
如果说是前3行合并为一行,你的算法不变,只需要更改判断语句即可,而我的则需要加入一个标志变量,并嵌套一个if语句;如果是前4行合并为一行,你的算法也没有什么大的变化,而我则需要重新写过了。
不过对于批处理来讲,效率和可扩展性之间的平衡点甚难处理,而且批处理脚本在实用中针对性比较强,建议大家尽量多注重效率。
第15楼 namejm 发表于 2006-09-22 09:27
荣誉版主 发帖 1,737 积分 5,226 来自 成都
  如果要实现每6行拼接为一行,剩余的不满6行的也在最后一行显示出来的话,可以在第9楼的代码上稍加改造就可以了,请看下面的代码:
1 2  下一页
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023