プロが教える店舗&オフィスのセキュリティ対策術

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

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

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

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

A 回答 (1件)

お望みの機能は cmd.exeのバッチ機能だけでは実現しません。


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

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

以下は 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
    • good
    • 0
この回答へのお礼

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

お礼日時:2012/02/22 08:49

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