如何从进程中检测StandardInput(在批处理脚本上)

时间:2014-05-05 15:20:47

标签: c# batch-file process redirectstandardoutput

我正在构建一个处理批处理脚本的控件。它使用“Redirect [...]”来获取错误和输出,然后将它们传递给TextBox。

我希望能够在必要时允许用户提供输入。

要求是:

  • 可能会提供任何.bat文件。 Ergo是一种用于在输出流中进行检查的硬连线机制(例如查找“:”或“?”)是不可能的。

  • 如果ShellExecute可以与获取错误和输出结合使用。

要明确:我的问题是知道在Process启动时需要输入,提示用户输入,然后将其提供回流程。

2 个答案:

答案 0 :(得分:0)

我认为不可能。

AFAIK那里无法知道进程正在等待输入。

你必须采用另一种方式,例如在批处理文件中放置一些回声,表明用户需要输入一些信息。

答案 1 :(得分:0)

如果这不是你问的话,我会事先道歉。

在批处理脚本上,您可以使用timeout命令检测标准输入是否已重定向到磁盘文件,例如,如果未重定向输入,则提示用户;否则,只需从重定向文件中读取:

timeout 1 >nul 2>nul
if errorlevel 1 (
   rem Input redirected: just read from redirected file
   set /P variable=
) else (
   rem Input is console: prompt the user
   set /P "variable=Enter the variable value: "
)

this post的进一步详情。