web-dev-qa-db-ja.com

テキスト/バッチファイルからコマンドラインプログラムに入力を送信する

私は、VC++でのプログラミングに携わっている機械エンジニアです。私たちの業界ではDOSプログラムを使用しており、8つのユーザー入力が必要です。毎回手作業で給餌する必要があります。テキストファイル/バッチファイルに入力を入れることで、このプロセスを自動化できますか?コマンドラインプログラムにデータを供給するこのプロセスを自動化したいと考えています。

あなたの経験に基づいていくつかの答えを得るのは完全に私の喜びです。

2
Balram

問題は誤解されていたと思います。

プログラムへの入力が正常に行われる場合:

> program
Enter input1:   A
Enter input2:   B
Enter input3:   C
Enter input4:   D

次に、操作を簡素化するために、次のようにテキストファイル(program.inp)を作成します。

A
B
C
D

そして、次のように実行します。

> program <program.inp
1
RustyC

プログラムに、入力ファイルまたは入力ファイルでパラメーターを取得するようなメソッドがまだない場合、プログラムにキーを自動的に送信するというプログラミングの問題のように聞こえます。 VBscriptにはSendKeysがあります。 VC++には間違いなくそれまたは同等のものがあります。それ以外の場合は、autohotkeys/autoitです。しかし、vbscriptでsendkeysの例を調べると、例が表示されます。

copy conコマンドを手動で試して、どのように機能するかを確認してください。 con c:\ blah\a.aをコピーします

次に、ファイルのテキストを入力し、Ctrl-Zを押して書き込みます。

そのため、コマンドラインに入力する必要がありました。

そして、それを自動的に行うこのvbscriptを試してください

コマンドライン用。これをwhatever.vbsと呼びます

dim a
a="copy con c:\blah\file.123"
Set WshShell = Wscript.CreateObject("Wscript.Shell")
WshShell.SendKeys a
WshShell.SendKeys "dsdsfd{ENTER}sdfds{ENTER}sleep for 2000ms and will enter more{ENTER}"
Wscript.Sleep 2000
WshShell.SendKeys "ewrwrewrewwe{ENTER}"
WshShell.SendKeys "sending ctrl-z and enter {ENTER}"
Wscript.Sleep 2000
WshShell.SendKeys "^Z{ENTER}"
1
barlop

最も簡単な方法は、次のコードを使用することです。

@echoオフセット/ p input = echo%input%> example.txt

お役に立てれば!

0
Mat A