我有一个.VBS文件,它通过我服务器上的计划任务运行。我在.ASP文件中有一些数据存在于我的网站上,我想将其引入该.VBS文件,这样我就不需要在两个地方复制相同的信息。
以下是ASP文件中的数据示例:
<%
If MyVar = "1" Then
Data1 = "this"
Data2 = "that"
Else
Data1 = "hi"
Data2 = "there"
End If
%>
这可能吗?我想我记得有关ExecuteGlobal的一些内容,但不能把它们全部放在一起 - 如果这实际上可以帮到这里。
答案 0 :(得分:4)
ExecuteGlobal ValidVBSCode
是在W / CScript托管脚本中重用/导入/包含VBScript 代码的简便方法。 ASP代码的问题是“&lt;%...%&gt;”,因此您必须预处理由.Readall()
加载的代码。
当您在.ASP文件中提及“数据”时,替代方法可能是将 .ReadAll()文件作为文本并解析将信息转换为合适的(可能是复杂的)变量。
如果您需要更多帮助,请发布一个小的但具有代表性的文件样本,以便“包含”。
演示脚本(针对给定样本):
Option Explicit
Dim sASP : sASP = Join(Array( _
" <% If MyVar = ""1"" Then" _
, " Data1 = ""this""" _
, " Data2 = ""that""" _
, " Else" _
, " Data1 = ""hi""" _
, " Data2 = ""there""" _
, " End If %>" _
), vbCrLf)
WScript.Echo sASP
Dim sExpr : sExpr = Replace(Replace(sASP, "<%", ""), "%>", "")
WScript.Echo sExpr
Dim MyVar, Data1, Data2
For Each MyVar In Split("1 2")
ExecuteGlobal sExpr
WScript.Echo myVar, Data1, Data2
Next
输出:
cscript 22821687.vbs
<% If MyVar = "1" Then
Data1 = "this"
Data2 = "that"
Else
Data1 = "hi"
Data2 = "there"
End If %>
If MyVar = "1" Then
Data1 = "this"
Data2 = "that"
Else
Data1 = "hi"
Data2 = "there"
End If
1 this that
2 hi there
更新评论和@Dennis的演示代码:
我错误地认为(基于w / cscript拒绝它们)“&lt;%..%&gt;”会引起问题。正如Dennis的代码所示(并且我的'阅读'测试确认后),Execute(Global)处理得很好;替换是没有必要的。 (所以我认为丹尼斯的答案值得赞扬。)
答案 1 :(得分:3)
有这个工作!这是一段代码示例。感谢您的帮助!
MyVar = "2"
Sub Import(ByVal strFile)
Set objFs = CreateObject("Scripting.FileSystemObject")
Set objFile = objFs.OpenTextFile(strFile)
strCode = objFile.ReadAll
objFile.Close
ExecuteGlobal(strCode)
End Sub
Import "E:\path\test.asp"
msgbox(Data1)
响应是&#34;嗨&#34;。