【问题标题】:proccessing input interactively from command line using VBscript使用 VBscript 从命令行交互处理输入
【发布时间】:2014-01-13 12:12:04
【问题描述】:

我正在尝试使用 VBScript 从命令提示符交互地读取输入,但我似乎无法使用 readLine() 读取数据以便稍后发送回复。

这是我尝试过的代码:

set OBJECT=WScript.CreateObject("WScript.Shell")
For i=1 To 500
  If i=450 Then Exit For
OBJECT.SendKeys "00LI002LE99{ENTER}" 
WScript.sleep 2000 
dim input=ReadLine()
If input="LI002LE99" Then OBJECT.SendKeys "OK{ENTER}"

OBJECT.SendKeys "00LI002LE00{ENTER}" 
WScript.sleep 2000 
Next 

这段代码的想法是,如果我要在命令行上发送命令00LI002LE99,我想发送LI002LE99 的控制台回复。如何让我的脚本使用 readline() 命令读取数据,然后发送适当的响应?

【问题讨论】:

    标签: shell vbscript wsh


    【解决方案1】:

    我不是 100% 确定您为什么要这样做,但是您的代码存在一些问题:

    1. 我建议避免将名称 OBJECT 用于变量。
    2. 你不能像在 vbscript 中那样使用dim。您必须将其拆分为多个指令。您通常使用什么语言?
    3. 您尝试使用 Readline() 的方式行不通。

    这是您的脚本的一个工作示例,但请注意,如果您将焦点从命令窗口移开,可能会发生奇怪的事情! (例如:发送键指令会将结果输出到具有当前焦点的任何窗口 - 我想这不是想要的结果,如果你在窗口或其他东西之间切换):

    Option Explicit
    
    Dim shell, i, input        
    
    set shell=WScript.CreateObject("WScript.Shell")
    For i=1 To 500
         If i=450 Then Exit For
         shell.SendKeys "00LI002LE99{ENTER}" 
         WScript.sleep 2000 
         input = WScript.StdIn.ReadLine() 
         If input="00LI002LE99" Then shell.SendKeys "OK{ENTER}"
         shell.SendKeys "00LI002LE00{ENTER}" 
         WScript.sleep 2000 
    Next  
    

    祝你好运。同样,不完全确定你在这里做什么:) 仅供参考:Wscript.StdIn.ReadLine() 会受到影响。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多