2014-05-05 43 views
0

我正在構建一個處理批處理腳本的控件。它使用「重定向[...]」來獲取錯誤和輸出,然後將它們傳遞到文本框中。如何從進程中檢測StandardInput(在批處理腳本中)

我希望能夠在必要時允許用戶提供輸入。

的要求是:

  • 任何bat文件可以被提供。 Ergo是一種用於檢查輸出流的硬連線機制(例如查找「:」或「?」)是不可能的。

  • 如果ShellExecute可以結合使用獲取錯誤和輸出很好。

要清楚:我的問題是知道當進程已經開始時需要輸入,提示用戶輸入並提供給進程。

回答

0

我不認爲這是可能的。

AFAIK那裏沒有辦法知道進程正在等待輸入。

您必須以其他方式,例如在批處理文件中放入一些迴應,以表明用戶需要輸入一些內容。

0

如果這不是你所問的,我很抱歉。

在批處理腳本中,您可以檢測標準輸入是否使用timeout命令重定向到磁盤文件,例如,如果輸入未重定向,則提示用戶;在this post

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: " 
) 

進一步瞭解詳細:否則,只是從重定向的文件中讀取。