こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

バッチレベルでプログラム起動制御する方法につい

Windowsにて、OS起動時にスタートアップにバッチファイルを登録し、以下のようなことを事をしたいのですが、バッチファイルの記述方法が知識不足でよくわかりません。

以下のバッチファイルは、どのように記述すればよいのでしょうか?

(1)”アプリケーションXXXを起動しますか?[Y/N]"とコメントをコマンドプロンプトで表示する。
(2)コマンド入力時
  キー入力にて"Y"を入力した場合         :アプリケーションXXXを起動
  キー入力にて"N"を入力した場合         :バッチを終了しコマンドプロンプトに戻る。
  キー入力が一定時間(20秒程度)なかった場合:20秒経過後アプリケーションXXXを起動

わかる方、おしえてくださいませ。

投稿日時 - 2012-02-15 18:07:51

QNo.7306944

困ってます

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

お望みの機能は cmd.exeのバッチ機能だけでは実現しません。
方法は2つあると思います。
1. バッチファイルを拡張するプログラムを導入する。
http://www.vector.co.jp/soft/win95/util/se349380.html
などはお望みの動作の手助けをすると思います。
vector.co.jp などにあるバッチの拡張するツールを検索すると
よいかもしれません。

2.バッチにこだわらず他のプログラムを使用する。
wshなどはデフォルトでほとんどのWindowsで使用できます。
http://www.atmarkit.co.jp/fwin2k/tutor/cformwsh01/cformwsh01_01.html
http://www.atmarkit.co.jp/fwin2k/operation/wsh07/wsh07_03.html
コマンドプロンプトにこだわらなければより柔軟な対話的スクリプトが
書けます。

以下は hoge.vbs などとして実行してみてください。
少し変更すれば、望みの機能が実現できるかと思います。

Set objShell = WScript.CreateObject("WScript.Shell")

Directory = "C:\" '実行ファイルを起動するディレクトリ
RunCommand = "C:\windows\system32\cmd.exe /k echo aaa" '実行ファイル名
WaitTime1 = 20 'はじめのダイアログの待ち時間
WaitTime2 = 20 '次のダイアログの待ち時間

Ret = objShell.Popup( _
RunCommand & " の実行を" & vbcrlf & _
"中止する場合は「キャンセル」を押してください。", _
WaitTime1, "処理を実行しますか?", vbOKCancel+vbQuestion)

Select Case Ret
Case vbOK, -1
objShell.CurrentDirectory = Directory
objShell.Run RunCommand

Select Case Ret
Case vbOK
objShell.Popup "実行しました。", WaitTime2, vbInformation
Case -1
objShell.Popup "自動的に実行しました。", WaitTime2, vbInformation
End Select

Case vbCancel
objShell.Popup "キャンセルしました。", WaitTime2, vbInformation
End Select

投稿日時 - 2012-02-18 18:21:54

お礼

大変お世話になりました。
サンプルで頂きましたVBScriptのソースをベースに作成し、思った以上のものが出来ました。大変ありがとうございます。
UNIXのshellでやっていたような事がWindowsのコマンドプロンプトで動作するBATでできればと思っていましたが、拡張しないと出来ないことを始めて知りました。
頂いた2つの方法共に非常に的確に内容が把握できるものを教えていただき、参考のホームページのリンクもすごく参考になり勉強になりました。
こちらで紹介頂いたwshのホームページを参考に勉強していきたいと思います。
すばらしいご回答をありがとうございました。

投稿日時 - 2012-02-22 08:49:47

ANo.1

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(1)