推しミネラルウォーターはありますか?

あるプログラム(hello.exe)をcmd上で実行させます。
内容は、入力した数だけHello, world!を出力、というものです。

C:¥windows¥> hello.exe
3
Hello, world!
Hello, world!
Hello, world!

これをすべてバッチファイルで実行するのにはどうすればいいですか?

A 回答 (4件)

すみません。


もっと最適なツールの存在を忘れていました。

http://www.vector.co.jp/download/file/winnt/util …
から keyin.zip をダウンロードして、解凍して出てきた keyIn.exeを
バッチファイルのあるフォルダに保存して下さい。

そして、hello.exeを起動するバッチとして
「test.cmd」の名前でこの内容のファイルを作成して下さい。
--- ここから ----
@echo off
keyin.exe 3{CR}
hello.exe
--- ここまで ----

KMS.exe と違ってコンソールアプリの専用ツールですので
この手の処理には、向いていると思います。
    • good
    • 0

行いたい事は


 「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 …
から入手して、バッチファイルのあるフォルダに保存して下さい。
※ WINDOWSフォルダ配下は避けて下さい。存在する環境があります。

KMS.exe は、フリーのキーボード・マウス入力ソフトですので
http://www.vector.co.jp/download/file/winnt/util …
から 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
--- ここまで ----
    • good
    • 0

っそか・・・


結局のところ参考にならなかったんだね

先の回答である程度かみ砕いた内容で答えてみたんだけど、残念です

   echo ~

の部分を書き直すだけで問題は解決するんだけど質問者さんには難しすぎたかなあ
それともcmdコマンドの解説まで必要だったのかな?
  /k
  /c
の各オプションの使い方とか…
    • good
    • 0

( -`ω-)んー・・・



…それ、バッチファイルじゃないから…
プログラムをコマンドラインから実行しているんですよ?
(だって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コマンドが不要であれば、削除してください。



と、まあこんな具合です。
参考になったでしょうか。

この回答への補足

>プログラムをコマンドラインから実行しているんですよ?
しってます。

補足日時:2012/09/28 16:24
    • good
    • 0
この回答へのお礼

あの・・・
質問が悪かったのかもしれませんが、
hello.exeをバッチファイルで実行するということです。
でもあなたの勘違いでの解答が私の役に立つかもしれません。
ありがとう!!

お礼日時:2012/09/28 16:21

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!