我有一个 .VBS 文件,它通过我的服务器上的计划任务运行。我在我网站上的 .ASP 文件中有一些数据,我想将其提取到该 .VBS 文件中,这样我就不需要在两个地方复制相同的信息。
这是 ASP 文件中的数据示例:
<%
If MyVar = "1" Then
Data1 = "this"
Data2 = "that"
Else
Data1 = "hi"
Data2 = "there"
End If
%>
这可能吗?我想我想起了一些关于 ExecuteGlobal 的事情,但无法将它们全部放在一起 - 如果这实际上对这里有帮助的话。
最佳答案
ExecuteGlobal ValidVBSCode
是将 VBScript 代码 重新使用/导入/包含到 W/CScript 托管脚本中的简单方法。 ASP 代码的问题是“<% ... %>”,因此您必须预处理由 .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 拒绝它们)“<%..%>”会导致问题。正如 Dennis 的代码所展示的(以及我的“阅读后”测试所证实的),Execute(Global) 可以很好地处理它们;不需要替换。 (所以我认为丹尼斯的回答值得赞扬。)
关于vbscript - 尝试 "Include".VBS 文件中的 .ASP 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22821687/