中国DOS联盟论坛

中国DOS联盟

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

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

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





积分 404
发帖 179
注册 2006-3-30
状态 离线
『楼 主』:  求vbs处理文本的脚本

各位老师好

因为手头上有不少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 K,下载次数: 14)
2007-3-25 08:08
查看资料  发短消息 网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 2 楼』:  

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

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




积分 1212
发帖 464
注册 2006-12-13
状态 离线
『第 3 楼』:  

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

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





积分 404
发帖 179
注册 2006-3-30
状态 离线
『第 4 楼』:  

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

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

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

再次谢谢 各位的关注

再次感谢

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





积分 404
发帖 179
注册 2006-3-30
状态 离线
『第 5 楼』:  



  Quote:
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 楼』:  

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

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





积分 404
发帖 179
注册 2006-3-30
状态 离线
『第 7 楼』:  



  Quote:
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 楼』:  

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

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

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

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





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 9 楼』:  

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 楼』:  

不知道可不可以,请在测试后使用...
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 楼』:  

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

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





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 12 楼』:  

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

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

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





积分 404
发帖 179
注册 2006-3-30
状态 离线
『第 13 楼』:  



  Quote:
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 楼』:  



  Quote:
Originally posted by jmz573515 at 2007-3-25 22:00:
不知道可不可以,请在测试后使用...
[code]
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 楼』:  



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

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

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


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



论坛跳转: