|
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
状态 离线
|
|
2007-8-21 22:20 |
|
|
slore
铂金会员
积分 5212
发帖 2478
注册 2007-2-8
状态 离线
|
『第
14 楼』:
。。。。你不调用……
当然没有反映,还我也郁闷……(我还是高亮处理都看不到呀)
|
|
2007-8-21 22:22 |
|