在Windows批处理中自动应答输入提示

时间:2016-11-15 12:48:41

标签: windows batch-file

在Windows批处理中,我想启动一个程序,提示用户输入:

>someProgram.exe
> "Please enter "s" to start the program:
> 

如何自动传递" y"输入到提示符,这样我只需单击批处理即可启动程序?

3 个答案:

答案 0 :(得分:15)

你想要这个:

echo y | [Command]

例如:echo y |的Program.exe

"echo <answer> | <batch command>"

Ex:在删除文件之前,del / P命令选项将提示用户确认。 因此,如果您在批处理脚本中使用此选项,则需要手动输入才能继续。 要避免此手动输入,请在批处理脚本中使用命令“echo Y | del / P”来回答提示。

当通过批处理脚本调用输入时,您可以尝试使用此命令将输入​​(例如:用户名和密码提示的答案)传递给控制台应用程序。

参考:http://thirutechie.blogspot.com/2009/10/how-to-auto-answer-prompts-in-windows.html

答案 1 :(得分:3)

对于多个输入,请执行以下操作:

(回声输入1 &&回声输入2)|程序.exe

答案 2 :(得分:1)

您可以使用VBScript自动执行用户输入提示,然后编写命令以在批处理脚本中运行VBScript。

Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "command_that_asks_for prompt", 9 
WScript.Sleep 500 

'Msg is first prompt answer
Dim Msg: Msg = WshShell.ExpandEnvironmentStrings( "%DB_TYPE%" )

'send character by character using for loop for first input prompt
For i = 1 To Len(Msg)
WScript.Sleep 200
WshShell.SendKeys Mid(Msg, i, 1)
Next

WshShell.SendKeys "{ENTER}"

'Msg2 is second input prompt answer
Msg2 = WshShell.ExpandEnvironmentStrings( "%CONNECTION_TYPE%" )


' send character by character for second input prompt
For i = 1 To Len(Msg2)
   WScript.Sleep 200
   WshShell.SendKeys Mid(Msg2, i, 1)
Next

WshShell.SendKeys "{ENTER}"

上面的代码是为2个用户输入提示提供答案的示例。同样,我们可以提供多个提示。在这里,我试图提供环境变量作为输入提示的答案。 上面的代码可以另存为filename.vbs,然后在批处理脚本中将命令写入VBScript。

例如:

@echo off
'command to run VBScript
filename.vbs
pause

可以用作批处理脚本来自动回答输入提示。