在Windows批处理中,我想启动一个程序,提示用户输入:
>someProgram.exe
> "Please enter "s" to start the program:
>
如何自动传递" y"输入到提示符,这样我只需单击批处理即可启动程序?
答案 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
可以用作批处理脚本来自动回答输入提示。