在 CMD 中使用 cscript 運行 VBS 腳本時,可以通過以下幾種方式實現鍵盤輸入值:


方法 1:使用 InputBox 函數(彈出對話框輸入)

' script.vbs
Dim userInput
userInput = InputBox("請輸入值:", "輸入標題")

If userInput <> "" Then
    WScript.Echo "你輸入的是: " & userInput
Else
    WScript.Echo "未輸入內容"
End If

運行方式

cscript script.vbs

特點

  • 會彈出圖形化對話框(非純 CMD 界面)。
  • 適合簡單交互,但依賴 GUI 環境。

方法 2:通過 WScript.StdIn 讀取標準輸入(純 CMD 交互)

' script.vbs
WScript.StdOut.Write "請輸入值: "  ' 顯示提示(可選)
Dim input
input = WScript.StdIn.ReadLine()   ' 讀取用户輸入
WScript.Echo "你輸入的是: " & input

運行方式

cscript //Nologo script.vbs

關鍵點

  1. //Nologo 參數隱藏版權信息,使輸入體驗更乾淨。
  2. 輸入後需按 Enter 確認。
  3. 此方法在 CMD 中直接讀取鍵盤輸入,無圖形界面。

方法 3:通過命令行參數傳遞

' script.vbs
If WScript.Arguments.Count > 0 Then
    WScript.Echo "參數是: " & WScript.Arguments(0)
Else
    WScript.Echo "請通過命令行傳遞參數,例如: cscript script.vbs 你的值"
End If

運行方式

cscript script.vbs "Hello World"

特點

  • 適合自動化場景,無需交互。
  • 通過空格分隔多個參數(如 script.vbs arg1 arg2)。

方法 4:使用 stdin 重定向(批量輸入)

將輸入內容保存到文件(如 input.txt),然後重定向:

' script.vbs
Dim input
input = WScript.StdIn.ReadAll()  ' 讀取所有重定向的輸入
WScript.Echo "輸入內容: " & input

運行方式

cscript //Nologo script.vbs < input.txt

適用場景

  • 需要從文件或管道批量輸入時。

注意事項

  1. cscript vs wscript
  • cscript 用於命令行環境,支持 StdIn/StdOut
  • wscript 默認用於 GUI,可能不支持標準輸入。
  1. 調試提示
    添加 //Nologo 避免輸出冗餘信息:
cscript //Nologo script.vbs
  1. 輸入驗證
    在 VBS 中檢查輸入是否為空或合法:
If IsEmpty(input) Or input = "" Then
    WScript.Echo "錯誤:未輸入內容"
    WScript.Quit(1)
End If

完整示例(純 CMD 交互)

VBS 腳本 (input_demo.vbs):

WScript.StdOut.Write "請輸入姓名: "
Dim name
name = WScript.StdIn.ReadLine()

WScript.StdOut.Write "請輸入年齡: "
Dim age
age = WScript.StdIn.ReadLine()

WScript.Echo "你好, " & name & "! 你今年 " & age & " 歲。"

CMD 中運行

cscript //Nologo input_demo.vbs

效果
會依次提示輸入姓名和年齡,最後輸出結果。


通過上述方法,你可以靈活選擇適合場景的輸入方式。如果需要純命令行交互,方法 2(StdIn.ReadLine是最直接的選擇。