0

バッチ ファイルで、ユーザーからの入力を受け取る exe を実行しています。値をハードコーディングしてプロセスを続行したい。次の例を確認してください。

バット ファイル (GetData.bat):

set /p UserInput = Enter a number?
%1

バットファイルを呼び出すには:

GetData 5

5を設定する代わりに入力を待っています。

注:実際には、プロセスで入力を受け取るexeを呼び出しています。exeを変更できません。

4

2 に答える 2

2

コマンドラインパラメータは、標準入力(stdin)と同じものではありません。コマンドarugmentsまたはstdinの両方を介して入力を受け入れることができるプログラムがいくつかありますが、それは標準ではありません。

バッチスクリプトを機能させるには、データをstdoutにエコーし、結果をGetData.batにパイプする必要があります。

echo 5|GetData

複数行の入力を提供する必要がある場合は、次のようなことができます。

( 
  echo line1
  echo line2
  echo line3 etc.
) | yourProgram.exe

または、入力をテキストファイルに入れて、ファイルの内容をコマンドにパイプすることもできます。

type commands.txt | yourProgram.exe

または、入力をファイルにリダイレクトできます

<commands.txt yourProgram

一部のプログラムは、キーボードを直接読み取るか、入力を求める前に入力バッファをフラッシュすることに注意してください。そのようなプログラムに入力をパイプすることはできません。

更新-パイプ入力を使用しないexe

私が見たほとんどのデータベースコマンドラインプログラムには、コマンドライン引数としてユーザー名とパスワードを指定するオプションがあります。ドキュメントを読むか、コマンドライン引数についてexeファイルをグーグルで検索する必要があります。

exeファイルにコマンドラインで値を指定するオプションがない場合、唯一のオプションは、実行中のプログラムにキーストロークを渡すようにスクリプト化できるAutoHotKeyなどのサードパーティツールを使用することです。

于 2012-10-02T16:35:15.870 に答える
0

この例を見てください:

echo Enter a number?
set UserInput=%1
echo %UserInput%

次に、「GetData 5」と入力すると、出力は次のようになります。

Enter a number?
--empty line to execute "set"
5
于 2012-10-02T15:02:23.287 に答える