我有一个.VBS文件,它通过我服务器上的计划任务运行.我在.ASP文件中有一些数据存在于我的网站上,我想将其引入该.VBS文件,这样我就不需要在两个地方复制相同的信息. 以下是ASP文件中的
以下是ASP文件中的数据示例:
<% If MyVar = "1" Then Data1 = "this" Data2 = "that" Else Data1 = "hi" Data2 = "there" End If %>
这可能吗?我想我记得有关ExecuteGlobal的一些内容,但不能把它们全部放在一起 – 如果这实际上可以帮到这里.
ExecuteGlobal ValidVBSCode是在W / CScript托管脚本中重用/导入/包含VBScript代码的简便方法. 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)处理得很好;替换是没有必要的. (所以我认为丹尼斯的答案值得赞扬.)