• ベストアンサー
  • すぐに回答を!

バッチファイルでウインドウを閉じる方法ってありますか?

こんにちは、皆さんの知恵を貸してください。 自分はプログラムとかコマンドプロンプトなどはまったくの初心者ですが、研究で必要に迫られて現在勉強中・修行中の大学院生です。 OSはウインドウズXPです。コマンドプロンプトを起動して、とある計算コードを走らせます。計算時間が10時間弱かかるので連続計算させる為にバッチファイルを作ることにしました。 作製してみたところ、コードのexeファイルが起動すると新しいウインドウができてそこで実行されます。そしてそのウインドウを閉じないとバッチファイルに記述した次のファイルが読み込まれません。 週末とか、深夜とかにPCの前にいなくても計算を走らせる為に組んだバッチですが、手動でウインドウを消すのであればまったく無意味です。 ここで質問が2つあります。 1.計算が終了した、と認識させるにはどういう手段があるでしょう? 2.計算が終了したらそのファイル(ウインドウ)を閉じるようなコマンドって存在しますか? 1で計算終了を判断し、2でそのウインドウを削除する事ができれば次の計算が走るようになると思うのですが… IFとかCALLとか考えてみたのですが、どうにもわからずパニックに陥っててます。どうか皆さん、よろしくお願いします。 (;_;)

共感・応援の気持ちを伝えよう!

  • 回答数5
  • 閲覧数5204
  • ありがとう数6

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.3
  • you-m
  • ベストアンサー率58% (190/327)

問題を整理してみましょう。 現在実現したいことは、こういうことでよろしいでしょうか。 1.計算時間が10時間程度かかるEXE形式の実行ファイルがある。 2.それをバッチファイルから、順次呼び出し、最後まで勝手に動かしたい。 これを実現するためには、いくつか確認すべきことがあります。 まず、大前提として、そのEXEのプログラムは自分を終了させる方法をもたないのでしょうか? それがいわゆるGUIアプリケーションで、終了ボタンや右肩のXボタンを押さなければ終了できないというのであれば、そもそもバッチファイルから連続稼動はあきらめるしかありません。できないものはできないのです。 そのEXEが、どういった出自のものかわかりませんが、例えば起動時にオプションを渡すことで、計算終了後に自動的に終了するとか、そういった機能があれば、問題ありませんが、そうでないならバッチファイルから制御するのは、あきらめて別の方策を考えるほうが無難です。 バッチファイルは、自ら終了しないプログラムに対して、何か制御をするような機能は有していません。 また、計算が終了したことを知る方法も、そのEXEが提供していないのならば、ありません。 しかし、例えば以下のような条件を満たすのであれば、別の方法が可能かもしれません。バッチファイルよりは敷居が高いですけど。 A.少なくともマウスを使わず、キーボードだけの操作で終了が可能である。 B.起動すると、ウインドウのタイトルバーにアプリ名等が表示される。 C.計算終了した旨が、やはりウインドウのタイトルバーに表示される。 WSH上で、JScriptやVBScriptを組み合わせてコーディングすれば、起動されたタイトルバーの文字列からウインドウを特定し、そこに対してキー入力を送ることができます。 まあ、仮にA.の条件が満たせなかった場合、マウスイベントを送り込めるフリーウェアもいくつかあるので、そういったものを使う方法もありますが・・・。 いずれにしても、この無理やりな方法を実現するためには、B.やC.の方法は必須でしょう。 現在わかるところから言えるのは、このくらいですね。 もう少し、そのEXE自体の仕様がわかれば別の対処もあるかもしれませんけど、問題の根幹は、そのEXE自体の仕様だという認識をもってください。 以上 参考までに。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

御礼が遅くなって申し訳ありませんでした。 やはりバッチファイルからの制御は無理っぽいですね。列挙されたABCのうち、Aはムリっぽいです。BとCは表示されていると思います。 ただ、ウインドウをたくさん開くことで処理速度は遅くなりますが、同時計算が可能ということがわかりましたので休日や連休などはその方法で何とか計算できるようになりました。 回答ありがとうございました。

関連するQ&A

  • バッチファイル コマンドプロンプトのウインドウを閉じるには?

    VWD2008のASP.NET開発サーバを起動させるバッチファイルを作成してみたのですが、起動はできたもののコマンドプロンプトのウインドウを閉じることができません。 使用勝手を考えると、バッチをクリック→開発サーバ起動→プロンプトのウインドウを自動で消す、ところまで一括で処理させたいと考えていますが、可能でしょうか? バッチファイルの中身は以下のようになっています。 cd /d c:\Program Files\Common Files\Microsoft Shared\DevServer\9.0 WebDev.WebServer /port:8080 /path:"C:\Documents and Settings\you\My Documents\system\kanri\kanri" /vpath:"/" EXIT

  • バッチファイルについて

    ちょっと聞きたいんですけど、Windowsのバッチファイルを起動した場合に黒いコンソール画面が終了っていう風にでますよね。 バッチファイルの終了時にこのウインドウを閉じるようにしたいのですが、どうすればいいのでしょうか? ちなみに、プロパティにある、「終了時にウインドウを閉じる」を使わないで、できないでしょうか? プログラムで一時的に呼び出したいのですが、ウインドウが邪魔で・・・ どうか、教えてください。よろしくお願いします。

  • バッチフィルで起動した別ウインドウを閉じるには

    バッチファイルの中から別のコマンドプロンプトを起動して そこでコマンドを実行した後、この別起動したコマンドプロンプト のウインドウを閉じるにはどのようにすればよいでしょうか。 例えば、以下のバッチファイルを コマンドプロンプト(ウインドウ1)から実行すると もうひとつ別のコマンドプロンプト(ウインドウ2)が 起動してcopyコマンドが実行されますが 何分かしてコピーが終了して ウインドウ2はコマンド待ちの状態になりますが ウインドウ2は開いたままです。 この後、別のコマンドプロンプトを起動して 別の処理を行わせたいのですが その数だけ別ウインドウが表示されてしまいます。 ウインドウ2の処理が終わったらウインドウ2を閉じるには どのようにすればよいでしょうか。 (Windows7) ---test.bat------------ start copy /b c:\test1\test.exe c:\test2 -------------------------

その他の回答 (4)

  • 回答No.5

プログラムがきちんと終了していないのが原因だと思います。計算が終わった後にプログラムが何をしているか分かりませんけど、空ループか、データ入力待ち等のアイドリングしてるんだと思います。 人間としては計算終了はどうやって判定していますか?タイトルに終了メッセージがでるのでしょうか?Windowsの中にメッセージが出るのでしょうか?ファイルが出力されるとかで計算終了が分かるのでしょうか? まさかCPU占有率が0%になるから、終わったと判定してるということはないと思いますが・・ >計算が終了するとCPU稼働率が100%から数%まで落ちます これはプログラムが終了していなくても、こういう結果になる場合があります。 同時に走らせることが可能ならば、リレーはアバウトでも大丈夫そうですね。9時間位ずつずらして、Windowsのタスクで走らせるなどの対策で、同時に走らせる場合でもちょっと高速化できるかもしれません。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

お礼が遅くなって申し訳ありませんでした。しばらくぶりにGooを見て、お礼を差し上げていないことに気づきまして… 一応、問題は解決しました。 同時計算をさせて、2、3日後ぐらいに手動でウインドウを閉じるという作業を繰り返しました。 回答ありがとうございました!

  • 回答No.4
  • gugux
  • ベストアンサー率16% (68/413)

今回のケースでは、ロケットマウスが使えそうです。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ロケットマウスですか?初めて聞きました。 ちょっと調べてみて使ってみようと思います。 回答ありがとうございました。

  • 回答No.2
  • dac203
  • ベストアンサー率43% (92/212)

そのプログラムがどの様なものかわからないのですが、Dosアプリで「計算終了=プログラムの終了」という作りであるならば、そのEXEファイルのプロパティで「終了時にウィンドウを閉じる」としてもだめでしょうか?

共感・感謝の気持ちを伝えよう!

質問者からのお礼

お礼が遅くなって申し訳ありません。 プロパティに「終了時にウィンドウを閉じる」というのがあればすべて解決できるのですが、残念ながらありませんでした。 ただ、「計算終了=プログラムの終了」は認識されているようです。Execute Window の左下には「実行中」ないし「終了」の文字が書かれていて、計算が終了するとCPU稼働率が100%から数%まで落ちますので。 うーん。難しいです。回答ありがとうございました。 あと、この欄に書かせていただくのは申し訳ないとは存じますが、No.1の方へのお礼の冒頭で「回答が遅くなって」というのを「お礼が遅くなって」と訂正させていただきます。すいませんでした。

  • 回答No.1
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)

実行するexeは、ウインドウアプリケーションなのですか? exeの方に手を加えるわけにはいかないのですか?

共感・感謝の気持ちを伝えよう!

質問者からのお礼

回答が遅くなって申し訳ありません。 さすがにexeファイルをいじるリスクは負いたくないので… 回答ありがとうございました。

関連するQ&A

  • MS-DOSバッチファイルで、子バッチのレスポンスコードを親バッチで取得する方法

    MS-DOSバッチファイルで、 バッチファイル(親)からバッチファイル(子)を起動する処理を作成しています。 子バッチが以上終了した際のレスポンスコードを 親バッチで取得する方法がありましたら教えて下さい。 よろしくお願いいたします。

  • バッチファイルを1個だけしか起動しないようにしたい

    エクスプローラー上から バッチファイル(test.bat)を ダブルクリックしてバッチファイルを実行しています。 通常はコマンドプロンプトが1個だけ表示されて、 バッチファイルが実行して実行が終了すると コマンドプロンプトも閉じられます。 しかし、時々、 コマンドプロンプトが2個表示されることがあります。 つまり、ダブルクリックが、 1回ではなく2回実行されたと誤認識されて、 同じバッチファイル(test.bat)が 2つ起動してしまったと思われます。 当然、その後の処理はおかしくなります。 (バッチファイル(test.bat)の中に 何らかのコードを追加するなどして) 必ず1個だけしか起動しないようにすることは、 できないでしょうか。 (Windows10)

  • バッチファイル実行時のプロンプトを非表示にしたい

    WindowsXPでバッチファイルからバッチを実行するとコマンドプロンプトが一瞬表示されバッチが終了すると自動で閉じますが、このプロンプトを表示しないようには出来ないでしょうか? バッチの結果を知らせる必要が無い処理なのであの一瞬出てくるプロンプトが邪魔で…。

  • バッチファイルで実行ファイル同時実行

    こんにちは、 ある複数の実行ファイルを同時に起動させたく思い、 バッチファイルに実行ファイルを羅列したのですが、 調べたところNT系だと終了を待つ様です。 終了を待たずに次のコマンドに進み、実行後コマンドプロンプトを 閉じるまでを行う事は不可能なのでしょうか? よろしくお願いいたします。

  • Win7のコマンドプロンプトでバッチファイル自動終了は?

    Win7のコマンドプロンプトでバッチファイル自動終了は? Windows7上でバッチファイルを実行させます。 このとき、バッチファイルの中身は、Skypeの起動です。 Skype起動はするのですが、コマンドプロンプトの画面は開いたままです。 そして、Skypeを終了(システムトレイから完全終了)させると、コマンドプロンプトも閉じます。 Skype起動中にコマンドプロンプトを手動で終了させても大丈夫なのですが、いちいち面倒です。 なにかいい手はありませんか? ちなみに、なぜ、バッチファイルでSkypeを起動させるかというと、USBメモリーとかでSkypeを持ち運ぶためです。 バッチファイルの中身です。 Skype.exe /datapath:"DataFile" /removable バッチファイルは「Skype.exe」と同じディレクトリにあります。 ショートカットで作れば問題ないのですが、そうすると、USBのドライブレターが変わった時に対応できなくなるので、相対ディレクトリ指定のできるバッチファイルで起動をさせています。

  • バッチファイル 時間指定

    バッチファイルをスタートアップに入れています。 手軽で便利なのですが、起動するたびに出てしまうので、if文か何かを使って、前回の実行してから12時間経っていない場合はバッチファイルを終了させるようにできないでしょうか。 robocopyを使ったバッチで、オプションでログを作成するようにしています。そのテキストファイルの作成時間で12時間経っているかどうか判断できればと思っています。

  • バッチファイル

    WINDOWS2000のほうで聞きたいことがあります。 最近デスクトップ上のアイコンやショートカットが効かなく なってしまうことが多くて PCの製造元のほうに聞いたらexplorer.exeを再起動してくださいと 言われたのですが手順のほうが毎回めんどくさいので バッチファイルを作成して再起動するようにしたいのですけど 何個か作ってみて試してみたのですけど explorer.exeを終了させることがうまくできません。 killコマンドを使って終了させようとしてるのですが そこで引っかかってしまいます。 解決法と再起動のバッチの作り方教えてくださいお願いします。

  • コマンドプロンプト、バッチファイル

    解決法を探してみたのですが、見つからないのでご教授ください。 コマンドプロンプトでどんなコマンド(ipconfig,ping,etc)を入力しても 「操作可能なプログラムまたはバッチ ファイルとして認識されていません。」という警告が出るようになってしまいました。 多分、原因はJavaの勉強をしていたときに環境変数のパスをいじってしまったからだと思います。 調べていて、思ったことなのですが、カレントディレクトリにバッチファイル(.bat)というファイルが見当たりません。これがないからかなとも思っています。 コマンドプロンプトからのコマンド入力ができるように解決方法をご教授ください。

  • バッチファイルでMDBを終了したい。

    いつもお世話になっています。 今回はあるmdbファイルをバッチファイルを使って終了させたいのです。 例えば、Dドライブ直下に123.MDBというファイルがあります。これを19:00に終了させたいのですがどうしたらいいのでしょうか?バッチファイルを作成できればタスクマネージャーを19:00に実行して終了させようかと思っています。MDBのタイマーイベントは別で使用している為、使えません。コマンドプロンプト等でなんとか・・・ ご理解いただけましたでしょうか? よろしくお願いします。

  • コマンドラインやバッチファイルに詳しい方

    マイクロソフトのジャバスクリプト上位互換プログラミング言語 Typescriptのコンパイルを別プログラムから呼び出し実行したいのですが。 うまく行きません。 (Typescript用の簡易エディタを自作しているためそのエディタ上からコンパイルの操作を行いたい。) 例えば a.ts//typescriptのプログラムファイル a.js//コンパイル後に出きるJavaScript どのファイルにどのような引数渡しで起動すればよいでしょうか? それとも、バッチファイルを作る方がよいのでしょうか? もし、そうだとしたら、お手間でなければ バッチファイルのサンプルコードなども書いて頂けると助かります。 コマンドラインやバッチの知識が無いため、 必要情報が足りなければご指摘頂けると幸いです。