2014-01-13 80 views
1

我想從使用VBScript的命令提示符以交互方式讀取輸入,但我似乎無法使用readLine()讀取數據以便稍後發送答覆。使用VBscript從命令行交互輸入輸入

這裏是我曾嘗試代碼:

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

我不是100%肯定,爲什麼你會想這樣做,但也有一些問題與您的代碼:

  1. 我推薦使用的名稱OBJECT變量避免。
  2. 不能像在vbscript中那樣使用dim。你必須把它分成多個指令。你通常使用哪種語言?
  3. 您嘗試使用Readline()的方式不起作用。

下面是您的腳本的一個工作示例,但請注意,如果將焦點從命令窗口移開,可能會發生奇怪的事情! (例如:發送鍵指令將結果輸出到哪個窗口有當前的焦點 - 我猜想是不是想要的結果,如果你是Windows或東西之間的互聯):

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()將有點擊中和錯過。