以前の記事、「バックアップスクリプトを自動で実行する (2020/1/5)」で、バッチファイルを一定時間ごとにタスクスケジューラで起動する方法について紹介しました。
そちらの方法、ちゃんと問題なく実行はできるのですが、1つ気になる点が残っていました。「タスクスケジュールからタスクが起動される時に、黒いコマンドプロンプト画面が表示されてしまう」 というものです。作業中にコマンドプロンプト画面が表示されると、気が散る、というだけでなく、文字入力などの操作をしていた画面からフォーカスが外れてしまう、という作業効率にかかわる問題点となっていました。
今回これを回避するための、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ボタンで、タスクの作成完了となり、定期バックアップが開始されます。次回タスク実行時刻、前回の実行時刻、前回の実行結果などについては、タスクスケジューラで確認してみてください。
時間になっても、バックアップされている形跡がない場合、以下を確認してみてください。
タスクスケジューラの詳細については、いろいろ記事があると思いますので、調べてみていただければと思います。
RoboSync: RobocopyのためのGUIツール
本サイトで公開しているツールです。ダウンロードはこのバナーをクリック!
Version 1.3.27 をリリースしました! (2021/1/1)
RobocopyをGUIから実行できるようにするツールです。コマンドプロンプトを表示することなく、GUI画面からほぼマウス操作だけで実行までできます。
Robocopyがバックグラウンドでそのまま実行されますので設定に迷うことはありません。
・ 複数のコピー項目の作成と管理。
・ スクリプトファイル(バッチファイル)出力が可能。スケジューラによるバックグラウンド処理にも使えます。
・ Robocopyによるコピー実行前に、実行プレビュー(/L)、パラメータのチェック(/QUIT)が可能。
・ Robocopyのパラメータ設定の簡易チェック、Robocopy実行前の簡易チェックを行います。
・ Robocopy実行前後で実行するスクリプトを定義可能。
・ Robocopy実行途中での中断、実行ログの履歴管理と保存が可能。
【関連記事・関連コンテンツ】