【问题标题】:How can I start an interactive console for VBS?如何启动 VBS 的交互式控制台?
【发布时间】:2013-02-11 19:13:51
【问题描述】:

与这个问题非常相似:

How can I start an interactive console for Perl?

我只想能够开始输入 VBS 语句,一次一个,并立即评估它们,就像 Python 的 IDLE 一样。

【问题讨论】:

    标签: vbscript console interpreter interactive read-eval-print-loop


    【解决方案1】:

    几年前我写了this。它基于this blog post(存档here),但有一些改进。本质上它是一个使用Execute 语句的 REPL(读取、执行、打印、循环):

    Do While True
        WScript.StdOut.Write(">>> ")
    
        line = Trim(WScript.StdIn.ReadLine)
    
        If LCase(line) = "exit" Then Exit Do
    
        On Error Resume Next
        Execute line
        If Err.Number <> 0 Then
            WScript.StdErr.WriteLine Err.Description
        End If
        On Error Goto 0
    Loop
    

    我通常以同名的批处理文件(即“vbs.vbs”和“vbs.bat”)开始,如下所示:

    @cscript.exe //NoLogo %~dpn0.vbs
    

    【讨论】:

    • 我会添加 If Left(line, 2) = "? " Then line = Replace(line, "? ", "WScript.Echo ", 1, 1),以模仿 VBA IDE 的功能。
    • 感谢您发现语法错误。代码示例只是一个简约的核心实现,用于演示一般情况下的工作方式。我的真实代码(我的答案开头的链接)稍微复杂一点,并使用? 在给定关键字处打开 VBScript 帮助文件。
    • 我希望它继续使用“_”。
    • @js2010 真材实料。
    • @Daniel'Dang'Griffith 您可以使用: 分隔多个语句,例如Sub Test() : Msgbox("Hey") : End Sub,但当然这很快就会变得笨拙。对于更复杂的行为,您必须从 WScript.StdIn.ReadLine() 移开,例如转到 WScript.StdIn.Read(1) 上的循环,该循环不断读取字符,直到找到特殊的“现在运行所有这些”关键字。如果你下定决心,当然是可行的。
    【解决方案2】:

    您可以尝试让调试器 (cscript //X your.vbs) 为您工作,或者开始您自己的项目 - 可能基于 these (first 3?) proposals

    【讨论】:

      猜你喜欢
      • 2016-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-04
      • 2014-10-11
      • 2012-06-24
      • 2014-10-21
      • 2012-05-06
      相关资源
      最近更新 更多