実行中のコンソールアプリにバッチで入力を書き込もうとしたときにエラーが発生しました
Aug 19 2020
バッチファイルで実行したいexeファイルがあります。
Exeファイルは、3回入力を求めるサードパーティのコンソールアプリです。
だから私はそれを空の行、someTextとsomeOtherTextで埋めたいです
(echo. echo someText echo someOtherText) | call config.exe remove
しかし、私はこのエラーを受け取ります:
Cannot read keys when either application does not have a console or when console input has been redirected. Try Console.Read.
何が問題なのか、少なくとも検索の方向を教えてください。
次のような単純なコマンドを実行しようとしても、同じエラーが発生します。
echo. | call config.exe remove
回答
1 Maximus Aug 27 2020 at 08:53
あなたconfig.exe
はリダイレクトをまったく受け入れません。実際のコンソールバッファが必要です。
- 自動化する場合は、別のコンソールアプリケーションを作成できます。
- CreateProcessWの
config.exe
使用を開始します - WriteFile(ASCII、区切り行)またはWriteConsoleInputW(Unicode文字が必要な場合)を使用して、STD_INPUT_HANDLEに行を書き込みます。
\n
- 書き込みが完了したら、
config.exe
終了を待って終了コードを返します
もう1つの簡単なオプションは、ConEmuターミナルです(私は作成者です)。コンソールから簡単に使用できるGuiMacroスクリプトがあります。したがって、プロンプトから実行するか、バッチファイルでラップする(ConEmuで実行する)ことができます。
ConEmuC.exe -GuiMacro print "\ nsomeText \ nsome Other Text \ n"&config.exe remove