使用VBscript从命令行交互式处理输入

时间:2014-01-13 12:12:04

标签: shell vbscript wsh

我正在尝试使用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()命令让我的脚本读取数据,然后发送相应的响应?

1 个答案:

答案 0 :(得分:1)

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

  1. 我建议避免使用名称OBJECT作为变量。
  2. 您无法在vbscript中使用dim。您必须将其拆分为多个指令。你通常使用什么语言?
  3. 您尝试使用Readline()的方式只是赢了。
  4. 这是您的脚本的一个工作示例,但请注意,如果您将焦点移离命令窗口,可能会发生奇怪的事情! (例如:发送键指令会将结果输出到当前焦点的任何一个窗口 - 如果你在窗口或其他东西之间切换,我认为这不是理想的结果):

    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()将会有点受伤。