n-Archives.net

タスクスケジューラでコマンドプロンプト画面を表示しないでバッチファイルを実行する

目次

タスクスケジューラでバッチファイルを実行すると黒い画面が表示される

以前の記事、「バックアップスクリプトを自動で実行する (2020/1/5)」で、バッチファイルを一定時間ごとにタスクスケジューラで起動する方法について紹介しました。

そちらの方法、ちゃんと問題なく実行はできるのですが、1つ気になる点が残っていました。「タスクスケジュールからタスクが起動される時に、黒いコマンドプロンプト画面が表示されてしまう」 というものです。作業中にコマンドプロンプト画面が表示されると、気が散る、というだけでなく、文字入力などの操作をしていた画面からフォーカスが外れてしまう、という作業効率にかかわる問題点となっていました。

今回これを回避するための、VBスクリプトを使ったタスクスケジューラ登録方法について書きます。

 

VBスクリプトを使ってコマンドプロンプト画面を表示させない方法

 

VBスクリプトを作成する

まずバッチファイルを起動するVBスクリプトファイルを作成します。

起動したいバッチファイルが "N:\Work\backup-inc.bat" であった場合、以下のようになります。

 

VBスクリプト:N:\Work\backup-inc.vbs

Set ws = CreateObject("Wscript.Shell") 
ws.run "cmd /c N:\Work\backup-inc.bat", 0

 

もし、バッチファイルのパスに空白が含まれる場合は、"~" でくくる必要があります。例えば、"C:\Users\User Name\AppData\Roaming\RoboSync\scripts\my backup.bat" を起動したい場合、バッチファイル名を "~" でくくります。VBスクリプトでは、文字列内で " を表記したいときは、エスケープ表記で、"" と記述します。

 

VBスクリプト:C:\Users\User Name\AppData\Roaming\RoboSync\scripts\my backup.vbs

Set ws = CreateObject("Wscript.Shell") 
ws.run "cmd /c ""C:\Users\User Name\AppData\Roaming\RoboSync\scripts\my backup.bat""", 0

 

VBスクリプトの2行目の最後に記述されている 0 というパラメータは、ウィンドウを非表示にするという設定です。

 

タスクスケジューラに登録する

スタートボタンを右クリック → コンピュータの管理、または、デスクトップのPCアイコンを右クリック → 管理、で「コンピュータの管理」を起動します。

「タスクスケジューラ」を選択し、操作ペインの「タスクの作成...」を選択すると「タスクの作成」画面が表示されます。全般タブの名前欄に適切な名称を記入します。通常は「ユーザがログオンしている時のみ実行する」をチェックしておくのが良いと思います。

トリガータブを選択し、「新規」ボタンを押すと「新しいトリガー」画面が表示されます。タスクの開始を「スケジュールに従う」、設定を「1回」、繰り返し間隔を「1時間」、継続時間を「無期限」に設定し、有効にチェックされていることを確認します。繰り返し間隔を変えたい場合は、繰り返し間隔の欄を変更します。

操作タブを選択し、「新規」ボタンを押すと「操作の編集」画面が表示されます。操作を「プログラムの開始」とし、プログラム/スクリプト欄に「wscript.exe」、引数の追加欄には先ほど作成したVBスクリプトのパス名(N:\Work\backup-inc.vbs)を記入します。VBスクリプトのパス名に空白を含む場合はパス名を "~" でくくってください。

 

条件タブでは、起動時の各種条件が設定できます。アイドル時間のみ起動するように設定する場合、この画面で設定します。

設定タブでは、その他の設定ができますが、特に変更は不要です。

最後にOKボタンで、タスクの作成完了となり、定期バックアップが開始されます。次回タスク実行時刻、前回の実行時刻、前回の実行結果などについては、タスクスケジューラで確認してみてください。

 

うまく動かない時の確認方法

時間になっても、バックアップされている形跡がない場合、以下を確認してみてください。

  1. バッチファイルを手動(ダブルクリック)で起動してみて、意図した通りにバックアップされるか確認する。
  2. VBスクリプトを手動(ダブルクリック)で起動してみて、バッチファイルが起動し、意図した通りにバックアップされるか確認する。
  3. タスクスケジューラ画面で、該当タスクの前回の実行時刻、前回の実行結果等を参照し、VBスクリプトが起動されていたかを確認する。

 

まとめ

タスクスケジューラの詳細については、いろいろ記事があると思いますので、調べてみていただければと思います。

 

 

コメントをお送りください
お名前:
コメント:
コメントの公開: