用cscript在CMD中运行VBS程序如何用键盘输入值?

在 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,可能不支持标准输入。
  2. 调试提示
    添加 //Nologo 避免输出冗余信息:

    cscript //Nologo script.vbs
    
  3. 输入验证
    在 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是最直接的选择。

posted @ 2025-11-28 16:14  nxhujiee  阅读(0)  评论(0)    收藏  举报