実行中のコンソールアプリにバッチで入力を書き込もうとしたときにエラーが発生しました

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はリダイレクトをまったく受け入れません。実際のコンソールバッファが必要です。

  1. 自動化する場合は、別のコンソールアプリケーションを作成できます。
  • CreateProcessWのconfig.exe使用を開始します
  • WriteFile(ASCII、区切り行)またはWriteConsoleInputW(Unicode文字が必要な場合)を使用して、STD_INPUT_HANDLEに行を書き込みます。\n
  • 書き込みが完了したら、config.exe終了を待って終了コードを返します
  1. もう1つの簡単なオプションは、ConEmuターミナルです(私は作成者です)。コンソールから簡単に使用できるGuiMacroスクリプトがあります。したがって、プロンプトから実行するか、バッチファイルでラップする(ConEmuで実行する)ことができます。

    ConEmuC.exe -GuiMacro print "\ nsomeText \ nsome Other Text \ n"&config.exe remove