在批处理文件中使用参数作为中间输入

时间:2012-10-02 14:28:35

标签: windows batch-file scripting dos

在批处理文件中,我正在运行exe,它接受来自用户的输入。我想硬编码值并继续处理。检查以下示例:

在Bat文件(GetData.bat)中:

set /p UserInput = Enter a number?
%1

调用bat文件:

GetData 5

但它正在等待输入而不是设置5.

注意:例如,实际上我正在调用exe进程中的输入。我无法修改exe。

2 个答案:

答案 0 :(得分:2)

命令行参数与标准输入(stdin)不同。有些程序可以接受输入作为命令arugments或通过stdin,但这不是常态。

要使批处理脚本正常工作,必须将数据ECHO转到stdout,然后将结果通过管道传输到GetData.bat

echo 5|GetData

如果您必须提供多行输入,那么您可以执行类似

的操作
( 
  echo line1
  echo line2
  echo line3 etc.
) | yourProgram.exe

或者您可以将输入放在文本文件中,然后将文件内容传送到您的命令。

type commands.txt | yourProgram.exe

或者您可以将输入重定向到您的文件

<commands.txt yourProgram

请注意,某些程序直接读取键盘,或在提示输入之前刷新输入缓冲区。您将无法将输入传输到此类程序中。

更新 - 不使用管道输入

我见过的大多数数据库命令行程序都可以选择将用户名和密码指定为命令行参数。您应该阅读文档,或者将您的exe用于命令行参数。

如果你的exe没有在命令行中指定值的选项,那么你唯一的选择就是使用像AutoHotKey这样可以编写脚本的第三方工具来将键击传递给正在运行的程序。 / p>

答案 1 :(得分:0)

看看这个例子:

echo Enter a number?
set UserInput=%1
echo %UserInput%

然后,如果输入“GetData 5”,输出将如下所示:

Enter a number?
--empty line to execute "set"
5