我正在構建一個處理批處理腳本的控件。它使用「重定向[...]」來獲取錯誤和輸出,然後將它們傳遞到文本框中。如何從進程中檢測StandardInput(在批處理腳本中)
我希望能夠在必要時允許用戶提供輸入。
的要求是:
任何bat文件可以被提供。 Ergo是一種用於檢查輸出流的硬連線機制(例如查找「:」或「?」)是不可能的。
如果ShellExecute可以結合使用獲取錯誤和輸出很好。
要清楚:我的問題是知道當進程已經開始時需要輸入,提示用戶輸入並提供給進程。
我正在構建一個處理批處理腳本的控件。它使用「重定向[...]」來獲取錯誤和輸出,然後將它們傳遞到文本框中。如何從進程中檢測StandardInput(在批處理腳本中)
我希望能夠在必要時允許用戶提供輸入。
的要求是:
任何bat文件可以被提供。 Ergo是一種用於檢查輸出流的硬連線機制(例如查找「:」或「?」)是不可能的。
如果ShellExecute可以結合使用獲取錯誤和輸出很好。
要清楚:我的問題是知道當進程已經開始時需要輸入,提示用戶輸入並提供給進程。
我不認爲這是可能的。
AFAIK那裏沒有辦法知道進程正在等待輸入。
您必須以其他方式,例如在批處理文件中放入一些迴應,以表明用戶需要輸入一些內容。
如果這不是你所問的,我很抱歉。
在批處理腳本中,您可以檢測標準輸入是否使用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: "
)
進一步瞭解詳細:否則,只是從重定向的文件中讀取。