中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 搜索 | 上传 | 帮助 »
作者:
标题: 求vbs处理文本的脚本 上一主题 | 下一主题
kcdsw
中级用户





积分 404
发帖 179
注册 2006-3-30
状态 离线
『楼 主』:  求vbs处理文本的脚本 使用 LLM 解释/回答一下

各位老师好

因为手头上有不少doc文件需要做处理,想处理成xml格式的.
可是word里的xml格式与我想要的不相符.
我在网上找了很久 也不得要领. 特向大家求救!
之所以考虑用vbs , 目的是想最终用word 的宏来实现自动处理.
希望各位路过的兄弟们能帮我出出主意!

原文件结构.(doc)

第一卷(卷名)第一章(章名)
正文

第一卷(卷名)第二章(章名)
正文

.......
第二卷(卷名)第一章(章名)
正文

第二卷(卷名)第二章(章名)
正文

........

目标结构:(xml)

<book>
<juan>卷名
<zhang>章名
<zhengwen>正文
</zhengwen>
</zhang>
</juan>
<juan>卷名
<zhang>章名
<zhengwen>正文
</zhengwen>
</zhang>
</juan>
</book>
在众多朋友的帮助下,终于有了解决方案
目前输出的xml已经是标准xml了
我还想添加上 拖拽功能,和选择框效果
找了N多帖子,不得要领 还请各位兄弟帮忙


on error resume next
dim n,y
set ws=createobject("wscript.shell")
set fso=createobject("scripting.filesystemobject")
set file=fso.opentextfile("needhelp.txt",1)
do while file.atendofstream<>true
'去除前导空格
n=ltrim(file.readline)
'调用pd
call pd(n)
s=s & n & vbcrlf
loop
file.close


h=instr(s,"<juan>第")
jiewei=left(s,h-6):kaishi=mid(s,h-2)
set file=fso.createtextfile("out.xml",ture)
head ="<?xml version=""1.0"" encoding=""UTF-8""?>" & vbcrlf & "<book>" & vbcrlf
foot =VbCrLf & "</book>"
file.write head & kaishi & jiewei & foot
file.close
ws.run "explorer out.xml"

sub pd(a)
l=instr(a," ")
z=left(a,l-1)


'用空格分割字符
sp=split(a," ")
if left(z,1)="第" and right(z,1)="卷" Then
if y=z then
n=" </zhengwen>" & VbCrLf & " </zhang>" & " <zhang>"& vbcrlf & sp(0) & " " & sp(1) & " " & sp(2) & " " & sp(3) & VbCrLf & " <zhengwen>"
else
n=" </zhengwen>" & VbCrLf & " </zhang>" & vbcrlf & " </juan>" & VbCrLf & " <juan>" & sp(0) & " " & sp(1) & VbCrLf & " <zhang>" & sp(2) & " " & sp(3) & VbCrLf & " <zhengwen>"
end if
y=z
else
n=a
end If
end sub


Last edited by kcdsw on 2007-3-26 at 05:30 AM ]


附件 1: needhelp.txt (2007-3-25 11:20, 13.6 KiB,下载次数: 14)
2007-3-25 08:08
查看资料  发短消息  网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 2 楼』:   使用 LLM 解释/回答一下

VB好说,vbs没有里面的Like函数。。。麻烦啊


2007-3-25 10:47
查看资料  发短消息  网志   编辑帖子  回复  引用回复
jmz573515
银牌会员




积分 1212
发帖 464
注册 2006-12-13
状态 离线
『第 3 楼』:   使用 LLM 解释/回答一下

如果是在记事本里可能处理起来还能方便点...


2007-3-25 10:53
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
kcdsw
中级用户





积分 404
发帖 179
注册 2006-3-30
状态 离线
『第 4 楼』:   使用 LLM 解释/回答一下

呵呵 首先感谢楼上两位
也感谢所有关注这个帖子的朋友.
因为我自己不怎么懂编程.对一些高深的用法也不知道.

我自己有两种想法.
1是能够直接用word 宏来按照一定的规则来输出一个标准的xml 哪怕我再稍微手工修改一下都成, 目前这个方法还没有进入实质的阶段

2,利用word的宏,能够自动在卷章前加xml的标记
如 </zhang></juan><juan>
然后把这个文档存成txt,再手动调整一下.就基本能满足需要了.目前这个方法还在以纯手工来实现.不知道有没有其他思路.

再次谢谢 各位的关注

再次感谢


2007-3-25 11:10
查看资料  发短消息  网志   编辑帖子  回复  引用回复
kcdsw
中级用户





积分 404
发帖 179
注册 2006-3-30
状态 离线
『第 5 楼』:   使用 LLM 解释/回答一下

Originally posted by slore at 2007-3-25 10:47:
VB好说,vbs没有里面的Like函数。。。麻烦啊



谢谢你的回答.刚才我再次查看了word的宏,窗口的标题是micro visual basic
我不知道这里能不能满足这个函数.

兄弟能再详细的解释一下么?


2007-3-25 11:13
查看资料  发短消息  网志   编辑帖子  回复  引用回复
jmz573515
银牌会员




积分 1212
发帖 464
注册 2006-12-13
状态 离线
『第 6 楼』:   使用 LLM 解释/回答一下

我的意思是说VBS读取WORD(处里WORD)比较麻烦,处理文本文件能好些...


2007-3-25 11:13
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
kcdsw
中级用户





积分 404
发帖 179
注册 2006-3-30
状态 离线
『第 7 楼』:   使用 LLM 解释/回答一下

Originally posted by jmz573515 at 2007-3-25 11:13:
我的意思是说VBS读取WORD(处里WORD)比较麻烦,处理文本文件能好些...


谢谢

刚才没明白你的意思

这样也行.

只要能达到目的 就够了 我就是想把这些数据处理成xml


2007-3-25 11:17
查看资料  发短消息  网志   编辑帖子  回复  引用回复
baomaboy
银牌会员





积分 1513
发帖 554
注册 2005-12-30
状态 离线
『第 8 楼』:   使用 LLM 解释/回答一下

呵呵 不懂xml这东西 所以我就只能提供编程之外的可能性了

①用EmEditor作编辑器,用录制宏的方式尽可能的把大量繁重繁多的操作录制,然后你就可以一直F4了,然后改那些无法用录制宏操作的地方。
②有一个排版方面的软件DreamEdit,如果编程无法解决的话也建议尝试下。

想当初几百个.htm的模版文件.......呵呵全靠他们了。
只是个建议,在此不一定有效^_^


2007-3-25 11:35
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 9 楼』:   使用 LLM 解释/回答一下

result="第一卷(卷名)第一章(章名)" Like "第*卷(*)第*章(*)"
这个返回true!

所以可以判断那行包含卷名和章名,然后利用instr和mid可以截取到他们
result是false的部分那么就是正文了!

Last edited by slore on 2007-3-24 at 11:30 PM ]


2007-3-25 11:49
查看资料  发短消息  网志   编辑帖子  回复  引用回复
jmz573515
银牌会员




积分 1212
发帖 464
注册 2006-12-13
状态 离线
『第 10 楼』:   使用 LLM 解释/回答一下

不知道可不可以,请在测试后使用...

on error resume next
dim n
set ws=createobject("wscript.shell")
set fso=createobject("scripting.filesystemobject")
set file=fso.opentextfile("needhelp.txt",1)
do while file.atendofstream<>true
n=ltrim(file.readline)
call pd(n)
s=s & n & vbcrlf
loop
file.close

h=instr(s,"<juan>第")
jiewei=left(s,h-6):kaishi=mid(s,h-2)
set file=fso.createtextfile("out.xml")
file.write "<book>" & vbcrlf
file.write kaishi & jiewei & vbcrlf
file.write "</book>"
file.close
ws.run "notepad.exe out.xml"

sub pd(a)
l=instr(a," ")
z=left(a,l-1)
sp=split(a," ")
if left(z,1)="第" and right(z,1)="卷" then
n=" </zhengwen>" & vbcrlf & " </zhang>" & vbcrlf & " </juan>" & vbcrlf & " <juan>" & sp(0) & " " & sp(1) & vbcrlf & " <zhang>" & sp(2) & " " & sp(3) & vbcrlf & " <zhengwen>"
else
n=a
end if
end sub


2007-3-25 22:00
查看资料  发送邮件  发短消息  网志   编辑帖子  回复  引用回复
everest79
金牌会员

一叶枝头,万树皆春



积分 2564
发帖 1127
注册 2006-12-25
状态 离线
『第 11 楼』:   使用 LLM 解释/回答一下

word内置强大的逻辑替换工具,你可以直接将代码替换进去后另存为txt格式再改名为xml就行了


2007-3-25 22:48
查看资料  发短消息  网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 12 楼』:   使用 LLM 解释/回答一下

left(z,1)="第" and right(z,1)="卷"?

正文如果也满足这个条件不难吧?


2007-3-25 22:57
查看资料  发短消息  网志   编辑帖子  回复  引用回复
kcdsw
中级用户





积分 404
发帖 179
注册 2006-3-30
状态 离线
『第 13 楼』:   使用 LLM 解释/回答一下

Originally posted by slore at 2007-3-25 22:57:
left(z,1)="第" and right(z,1)="卷"?

正文如果也满足这个条件不难吧?



是不是说正文如果有了这样的数据 会出问题?


2007-3-25 23:58
查看资料  发短消息  网志   编辑帖子  回复  引用回复
kcdsw
中级用户





积分 404
发帖 179
注册 2006-3-30
状态 离线
『第 14 楼』:   使用 LLM 解释/回答一下

Originally posted by jmz573515 at 2007-3-25 22:00:
不知道可不可以,请在测试后使用...

on error resume next
dim n
set ws=createobject("wscript.shell")
set fso=createobject("scripting.filesystemobject")
...



非常感谢关注本帖的朋友
感谢你的代码
我这里测试了一下 成功了.
可能还有一些其他的问题,目前正在研究你的代码

问题:
卷章嵌套不正确

卷一
章一
章二
卷二
章一
章二


2007-3-26 00:00
查看资料  发短消息  网志   编辑帖子  回复  引用回复
kcdsw
中级用户





积分 404
发帖 179
注册 2006-3-30
状态 离线
『第 15 楼』:   使用 LLM 解释/回答一下

Originally posted by everest79 at 2007-3-25 22:48:
word内置强大的逻辑替换工具,你可以直接将代码替换进去后另存为txt格式再改名为xml就行了



我只会用简单的替换
还望赐教


2007-3-26 00:07
查看资料  发短消息  网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: