0

在批处理文件中,我正在运行从用户那里获取输入的 exe。我想硬编码价值并继续处理。检查以下示例:

在蝙蝠文件(GetData.bat)中:

set /p UserInput = Enter a number?
%1

调用bat文件:

GetData 5

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

注意:这只是例如实际上我正在调用 exe,它在过程中接受输入。我不能修改exe。

4

2 回答 2

2

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

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

echo 5|GetData

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

( 
  echo line1
  echo line2
  echo line3 etc.
) | yourProgram.exe

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

type commands.txt | yourProgram.exe

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

<commands.txt yourProgram

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

更新 - exe 不使用管道输入

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

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

于 2012-10-02T16:35:15.870 回答
0

看这个例子:

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

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

Enter a number?
--empty line to execute "set"
5
于 2012-10-02T15:02:23.287 回答