Vbscript 试图;包括「;.VBS文件中的.ASP文件

Vbscript 试图;包括「;.VBS文件中的.ASP文件,vbscript,asp-classic,Vbscript,Asp Classic,我有一个.VBS文件,它通过服务器上的计划任务运行。我的网站上有一个.ASP文件,其中有一些数据,我想将其拉入该.VBS文件,这样我就不需要在两个地方复制相同的信息 以下是ASP文件中的数据示例: <% If MyVar = "1" Then Data1 = "this" Data2 = "that" Else Data1 = "hi" Data2 = "there" End If %> 这可能吗?我想我记得一些关于ExecuteGlobal的

我有一个.VBS文件,它通过服务器上的计划任务运行。我的网站上有一个.ASP文件,其中有一些数据,我想将其拉入该.VBS文件,这样我就不需要在两个地方复制相同的信息

以下是ASP文件中的数据示例:

<%
If MyVar = "1" Then
    Data1 = "this"
    Data2 = "that"
Else 
    Data1 = "hi"
    Data2 = "there"
End If
%>


这可能吗?我想我记得一些关于ExecuteGlobal的事情,但不能把它们全部放在一起——如果这在这里真的有帮助的话。

ExecuteGlobalValidVBCode
是将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
选项显式
Dim sASP:sASP=Join(数组(_
" " _
),vbCrLf)
Echo sASP
Dim sExpr:sExpr=替换(替换(sASP,“,”)
WScript.Echo sExpr
Dim MyVar、数据1、数据2
对于拆分中的每个MyVar(“12”)
执行全局sExpr
Echo myVar、数据1、数据2
下一个
输出:

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
cscript 22821687.vbs
如果MyVar=“1”,则
Data1=“这个”
Data2=“那”
其他的
Data1=“你好”
Data2=“那里”
如果结束
这个那个
你好
将wrt更新为评论和@Dennis的演示代码:

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

我错误地认为(基于w/cscript拒绝它们)会导致问题。正如Dennis的代码所演示的(以及我的“阅读后”测试所确认的),Execute(Global)可以很好地处理它们;替换是不必要的。(因此我认为Dennis的回答值得称赞。)

这项工作正常!下面是一段代码示例。感谢您的帮助

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)

回答是“嗨”.

我就是这么想的。所以我只需剥离,然后我就可以执行全局剩余文本,然后我就可以访问变量了?上面的示例数据。thx!问题-从ASP文件导入的内容在哪里?或者使用FSO的ReadAll调用就在哪里?另外,我也不确定我是否理解拆分。非常感谢您的帮助帮助-感谢!是的,这个答案的问题是它忽略了实际可能很难的步骤:导入.asp文件的内容。“我如何从另一个文件导入数据?”“好吧,一旦你有了数据,下面是你可以如何使用它。”@Martha-这就是我提到的.ReadAll()的原因两次。此外:OT明确询问ExecuteGlobal及其使用。我的问题是:我对“”的担忧我们错了。谢谢各位。我在有替换和没有替换的情况下再次测试了该代码,它确实有效。因此,它不需要。感谢你们帮助我找到一种将ASP文件包含在VBS文件中的方法!为什么我的有效答案被否决了?另外,我收到的电子邮件中的评论都没有显示在这个线程上。奇怪。这个元线程将为您提供有了必要的背景,丹尼斯。就我个人而言,我将我的工作解决方案添加为“社区维基”答案。当另一个答案提供了大量解决方案时,你可能对此感兴趣。我想有人决定删除这些解决方案,但我个人不同意,我希望我的评论不受影响,或者至少通知我。