【解決方法】cmd ラインにキーを送信します


こんにちは、みんな
変数パラメーターを使用して同じアプリケーションを何度も実行するバッチ ファイルを実行します
各実行の間には任意のキーを押す必要があります
cmd 行でスペースバーを押すのを模倣するにはどうすればよいですか?

バッチファイルは次のようになります。

c:
cd「C:\マイアプリ」
“C:\MyApp\MyApp.exe” “1”
“C:\MyApp\MyApp.exe” “5”
“C:\MyApp\MyApp.exe” “0”

「C:\MyApp\MyApp.exe」「1」と「C:\MyApp\MyApp.exe」「5」の間
cmd 行は、ユーザーからのキー入力を待ちます。
このキーの押下を cmd 行に書きたいのですが
次のようなもの:

c:
cd「C:\マイアプリ」
“C:\MyApp\MyApp.exe” “1”
“プレスキー” {“スペースバー”}
“C:\MyApp\MyApp.exe” “5”
“プレスキー” {“スペースバー”}
“C:\MyApp\MyApp.exe” “0”

ありがとう!

DJ4400

私が試したこと:

ググってみると
SendKeysコマンド、もしかしたら使い方が間違っているのでしょうか?

解決策 1

コマンド ラインからアプリを起動した後は、アプリにキーを送信することはできません。コマンド (またはバッチ ファイル) の実行は、実行したアプリが終了するまで行われません。

ただし、パイプラインを使用してアプリにキーを送信できる場合があります。 パイプラインについて – PowerShell | Microsoft Learn[^]

あなたの例が示しているように、それがあなたのアプリである場合、より良い方法は、アプリにコマンドラインスイッチを追加して「無人」で動作させることです – グローバル変数はアプリの起動時に設定され、アプリがユーザー入力を必要とするたびにチェックされます。

解決策 3

Griff 氏が述べたように、コンソール アプリケーションを作成した場合、入力を求めるプロンプトが表示されないように変更するのが最善の選択です。

それが変更できないものである場合は、おそらくそのようなものがすでに存在している可能性があります。 さらに調査する必要があります。

それができない場合は、プロセス経由でアプリケーションを実行し、プロンプトを検出してそれに応答するコンソール アプリケーションを作成できます。 これは常に機能するとは限りませんが、試してみることはできます。

私はこのようなことをしました: プロセスコミュニケーター[^]

コメント

タイトルとURLをコピーしました