- 締切済み
バッチファイルで
あるプログラム(hello.exe)をcmd上で実行させます。 内容は、入力した数だけHello, world!を出力、というものです。 例 C:¥windows¥> hello.exe 3 Hello, world! Hello, world! Hello, world! これをすべてバッチファイルで実行するのにはどうすればいいですか?
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- RURUFOU
- ベストアンサー率55% (5/9)
すみません。 もっと最適なツールの存在を忘れていました。 http://www.vector.co.jp/download/file/winnt/util/fh464095.html から keyin.zip をダウンロードして、解凍して出てきた keyIn.exeを バッチファイルのあるフォルダに保存して下さい。 そして、hello.exeを起動するバッチとして 「test.cmd」の名前でこの内容のファイルを作成して下さい。 --- ここから ---- @echo off keyin.exe 3{CR} hello.exe --- ここまで ---- KMS.exe と違ってコンソールアプリの専用ツールですので この手の処理には、向いていると思います。
- RURUFOU
- ベストアンサー率55% (5/9)
行いたい事は 「hello.exe」を起動して(コンソールアプリですよね?) 「3」等の数字を「バッチ」で入力する 「バッチファイルを作成」でよろしいでしょうか? hello.exeは、起動するとキー入力待ちになって 「数字」と「Enter」を入力する仕様として話を進めさせていただきます。 hello.exeを起動する事と キー入力をする部分を作って対応してみました。 まず、hello.exeを起動するバッチとして 「test.cmd」の名前でこの内容のファイルを作成して下さい。 --- ここから ---- @echo off CLS START /MIN keyinput.cmd 3 ←ここに入力させたい回数をセット hello.exe --- ここまで ---- 次にキー入力部分です。 「keyinput.cmd」の名前でこの内容のファイルを作成して 「test.cmd」と同じフォルダに保存して下さい。 --- ここから ---- @echo off ECHO;%~1| CLIP.exe KMS.exe W2000 KDA4 KI20 KUA4 KI45 KI28 KI28 KI0D --- ここまで ---- CLIP.exe は、OS標準で用意されて無い環境がありますので ftp://ftp.microsoft.com/Services/TechNet/samples/ps/win98/reskit/file/clip.exe から入手して、バッチファイルのあるフォルダに保存して下さい。 ※ WINDOWSフォルダ配下は避けて下さい。存在する環境があります。 KMS.exe は、フリーのキーボード・マウス入力ソフトですので http://www.vector.co.jp/download/file/winnt/util/fh429341.html から kms1_1.zip をダウンロードして、解凍して出てきた KMS.exeを バッチファイルのあるフォルダに保存して下さい。 で、コマンドプロンプトを開き、上記のファイルが保存されたフォルダに移動して 「test」と入力する事でいいと思います。(WIN7(32ビットHOME)で動作確認しました。) 別のバッチを起動して2秒後にキー入力をするという かなりトリッキー且つ運まかせなバッチです。 hello.exe の起動が2秒以上かかったらアウトです。 ついでに「入力した数だけHello, world!を出力」 をバッチファイルで作ってみました。 よろしければ参考にしてみて下さい。 空(カラ)入力や、英字入力対策をしてあります。 --- ここから ---- @echo off set kaisu=0 set /p kaisu=表示する回数を入れてEnterを押してね set /a kaisu+=0 if %kaisu% LSS 0 set kaisu=0 :kurikaisu if %kaisu% EQU 0 goto :eof set /a kaisu+=-1 echo;Hello World! goto :kurikaisu --- ここまで ----
- Cupper-2
- ベストアンサー率29% (1342/4565)
っそか・・・ 結局のところ参考にならなかったんだね 先の回答である程度かみ砕いた内容で答えてみたんだけど、残念です echo ~ の部分を書き直すだけで問題は解決するんだけど質問者さんには難しすぎたかなあ それともcmdコマンドの解説まで必要だったのかな? /k /c の各オプションの使い方とか…
- Cupper-2
- ベストアンサー率29% (1342/4565)
( -`ω-)んー・・・ …それ、バッチファイルじゃないから… プログラムをコマンドラインから実行しているんですよ? (だってEXEファイルでしょ、それ) 全てバッチファイルで作成するなら次の処理を行う必要があります。 ・文字列を出力する ・指定回数繰り返す ・指定回数をキー入力する 文字列の出力は ECHOコマンド でOK。 ECHO 出力したい文字列 として使うので質問の例なら echo Hello World! と記述です。 指定回数繰り返すには FORコマンド を使うのが一般的ですが、 FORコマンドは環境変数を展開して扱うので遅延が発生し 嬉しくない動作になりがちです。 IFコマンド と GOTOコマンド の組み合わせが分かりやすく 遅延も発生しないので、自分はこちらをお奨めします。 SETコマンドで /aオプション を付けることで演算することができます。 これをカウンタとして使用します。 (カウンタに使う環境変数に N と言う文字列を指定しています) set N=0 :loop1 set /a N=%N%+1 (処理したいコマンド) if not %N% == 3 goto loop1 こんな感じになります。 キー入力ですが、これは SETコマンドで /pオプション を付けることでキー入力を記録できます。 (環境変数として INKEY と言う文字列を指定しています) SET /p INKEY= これで環境変数 %INKEY にキー入力された文字が入力されます。 最後に、これらのWindowsのコマンドプロンプトの上で テストをするとき、結果が表示された直後に コマンドプロンプトの表示が消えないよう 最後に PAUSEコマンド を記述すると良いでしょう。 …で、これらを組み合わせると set N=0 set /p INKEY= :loop1 set /a N=%N%+1 echo Hello World! if not %N% == %INKEY% goto loop1 pause こんなふうになります。 ただしキー入力が数字であることを検査していないので 英文字を入力すると延々と Hello Wprld! を表示し続けますので注意してください。(Ctrl+Cで強制終了できます) 見た目がシンプルだけどお奨めしないFORコマンドを使った例 (環境変数 %A をダミーとして使用しています) set /p INKEY= for /l %%A in (1,1,%INKEY%) do echo Hello World! pause これらをテキストで保存して Hello.bat と、ファイル名を変更してください。(拡張子に注目!!) あとは Hello と実行するだけでパスが通っていれば普通に実行されます。 PAUSEコマンドが不要であれば、削除してください。 と、まあこんな具合です。 参考になったでしょうか。
お礼
あの・・・ 質問が悪かったのかもしれませんが、 hello.exeをバッチファイルで実行するということです。 でもあなたの勘違いでの解答が私の役に立つかもしれません。 ありがとう!!
補足
>プログラムをコマンドラインから実行しているんですよ? しってます。