中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » vbs有没有类似<!--#include file="DB.asp"-->的写法
作者:
标题: vbs有没有类似<!--#include file="DB.asp"-->的写法 上一主题 | 下一主题
picat
初级用户





积分 150
发帖 68
注册 2007-4-26
状态 离线
『楼 主』:  vbs有没有类似<!--#include file="DB.asp"-->的写法

lfzzj已经发过类似的问题,但是他可能没把问题描述清楚,所以没人回答。
   具体情况是这样的:
   我创建了若干操作sql 2000 的vbs文件,由于是对同一个数据库进行操作,所以想把跟数据库配置相关的信息都放到dbsetting.vbs文件里,供上面所有的这些vbs来调用,类似asp中的写法<!--#include file="DBsettingl.vbs"-->,我只要把它加入到上面的vbs文件中就可以了,也类似C中调用头文件的做法,vbs有没有类似的写法?具体该怎么写呢?
   搜索了很久也没找到答案,也可能跟我没找到合适的关键字有关,还请知道的TX告知,或者如果坛子里已经有的话,能告诉我用什么关键字去查找,谢谢了!

2007-8-21 10:41
查看资料  发短消息 网志   编辑帖子  回复  引用回复
slore
铂金会员





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

Test.ini:

  Quote:
slore = ""
vbs = "VBscript脚本"
bat = "批处理"

VBS脚本添加:

  Quote:
Const ForReading = 1
Dim objFSO,objFile
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("Test.ini", ForReading)
Execute objFile.ReadAll
objFile.Close
Set
objFile = Nothing
Set
objFSO = Nothing

'-----------调用演示-------------
MsgBox slore & vbs & bat



2007-8-21 11:22
查看资料  发短消息 网志   编辑帖子  回复  引用回复
picat
初级用户





积分 150
发帖 68
注册 2007-4-26
状态 离线
『第 3 楼』:  

LS的这个写法用是可以用了,就是麻烦了点,需要再次引用,而且我可能在dbsetting.vbs里加入了一些函数和过程,本来asp可以直接调用的,vbs看来是不行了...,有点失望啊。不过还是感谢slore兄;)

2007-8-21 11:27
查看资料  发短消息 网志   编辑帖子  回复  引用回复
slore
铂金会员





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

ini文件:
slore = ""
vbs = "VBscript脚本"
bat = "批处理"

Sub MySub(name)
   
MsgBox "演示一个过程" & vbCrLf & "slore=" & name
End Sub

Function
MyFunction(name)
   
MyFunction = name
End Function


vbs:
Const ForReading = 1
Dim objFSO,objFile
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("Test.ini", ForReading)
Execute objFile.ReadAll
objFile.Close
Set
objFile = Nothing
Set
objFSO = Nothing

'-----------调用演示-------------
MsgBox slore & vbs & bat
Call MySub("名字") '调用过程
MsgBox MyFunction("我是一个函数")

需要再次引用?什么意思?
ASP不是也要引用?只是它个格式简单罢了……
函数,和过程通吃!

2007-8-21 11:38
查看资料  发短消息 网志   编辑帖子  回复  引用回复
picat
初级用户





积分 150
发帖 68
注册 2007-4-26
状态 离线
『第 5 楼』:  

过程和函数可以这样直接引用?那太好了。之前是我理解错了,谢谢slore兄!~~

2007-8-21 11:46
查看资料  发短消息 网志   编辑帖子  回复  引用回复
sonicandy
中级用户





积分 273
发帖 91
注册 2007-5-7
状态 离线
『第 6 楼』:  

貌似不行的说.
Execute的定义代码不能在当前的vbs中使用.

2007-8-21 16:59
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
slore
铂金会员





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



  Quote:
Originally posted by sonicandy at 2007-8-21 16:59:
貌似不行的说.
Execute的定义代码不能在当前的vbs中使用.

实践去检验……

不要貌似

2007-8-21 18:03
查看资料  发短消息 网志   编辑帖子  回复  引用回复
sonicandy
中级用户





积分 273
发帖 91
注册 2007-5-7
状态 离线
『第 8 楼』:  

我检验过了,确实不行.
这两天正好完成了一个MakeFile类:
Dim o
Set o = new CMakeFile
Call o.start("test.vbs")
Set o = Nothing

' 代码执行器,可以整合包含以下个是的脚本
' #include "文件名"
Class CMakeFile
Private fso        ' 文件系统对象
Private dic        ' 字典对象
Private shell
Private stream
Property Get  FILE_NOT_FOUND()
        FILE_NOT_FOUND = vbObjectError + 513
End Property
Property Get  CLASS_NAME()
        CLASS_NAME = "CMakeFile"
End Property
Sub class_initialize()
        Set fso = CreateObject("scripting.filesystemobject")
        Set dic = CreateObject("scripting.dictionary")
        Set shell = CreateObject("wscript.shell")
End Sub
Sub class_terminate()
        Set fso = Nothing
        Set dic = Nothing
        Set shell = Nothing
End Sub
Public Sub Require(filename)
        On Error Resume Next
        ' 判断是否已经打开过此文件
        If dic.exists(filename) Then
                Exit Sub
        Else
                Call dic.add(filename,"")
        End If
        filename = fso.getabsolutepathname(filename)
        If fso.fileexists(filename) Then
                Dim file,line,buffer,arr
                Set file = fso.opentextfile(filename,1,true)
                line = 0
                While Not file.atendofstream
                        line = line + 1
                        buffer = file.readline
                        If instr(1,buffer,"#include",vbTextCompare) = 1 Then
                                arr = Split(buffer,"""")
                                Call Require(arr(1))
                                If Err.number<>0 Then
                                        Call Err.raise(Err.number,Err.source,"抛出异常在 " & filename & " 的第" & line & "行." & vbcrlf & Err.description)
                                End If
                        Else
                                Call stream.writeline(buffer)
                        End If
                Wend
                Call file.close()
                Set file = Nothing
        Else
                Call Err.raise(FILE_NOT_FOUND,CLASS_NAME,"没有找到文件 """ & filename & """")
        End If
End Sub

Sub Start(filename)
        Set stream = fso.opentextfile("output.vbs",2,True)
        Call require(filename)
        If Err.number<>0 Then
                Call MsgBox("错误: #" & Err.number & "源:" & Err.source & vbcrlf & "描述:" & vbcrlf & Err.description)
        Else
                Call MsgBox("output.vbs 成功生成!")
        End If
        Call stream.close()
        Set stream = Nothing
End Sub

End Class


2007-8-21 18:40
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
slore
铂金会员





积分 5212
发帖 2478
注册 2007-2-8
状态 离线
『第 9 楼』:  不知道你是如何检验的

截图:

附件 1: Test.gif (2007-8-21 21:08, 29.35 K,下载次数: 1)


2007-8-21 21:08
查看资料  发短消息 网志   编辑帖子  回复  引用回复
sonicandy
中级用户





积分 273
发帖 91
注册 2007-5-7
状态 离线
『第 10 楼』:  

不知道为什么,我这里没有反应..

2007-8-21 22:15
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
sonicandy
中级用户





积分 273
发帖 91
注册 2007-5-7
状态 离线
『第 11 楼』:  

可以了,原来是漏掉了下边的调用..

2007-8-21 22:17
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
slore
铂金会员





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

我是XP SP2,你是什么系统?如果一样就奇怪了……

2007-8-21 22:17
查看资料  发短消息 网志   编辑帖子  回复  引用回复
sonicandy
中级用户





积分 273
发帖 91
注册 2007-5-7
状态 离线
『第 13 楼』:  

太好了

2007-8-21 22:20
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
slore
铂金会员





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

。。。。你不调用……
当然没有反映,还我也郁闷……(我还是高亮处理都看不到呀)

2007-8-21 22:22
查看资料  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: