今回は、タスクスケジューラを使用している運用でシャットダウン時に面倒になった事例を紹介。

まず、私の環境、Ramdiskを利用していて、定期的にHDDにバックアップするようにタスクスケジューラでバッチを組んでいます。
間隔としては、数時間に1回のフルバックアップと1時間に1回程度の差分バックアップでの運用です。

シャットダウンやリブート時は専用のバッチを利用して必要な処理を行いRamdiskの内容もフルバックするようにしていますが、バックアップの処理は先のタスクに登録されたバッチと同じものをコールしています。

先日、WUの適用を終えてリブートしようとバッチを起動したところ、ちょうどタスクスケジューラに登録されたタスクとバッティングし処理がストップしてしまいました。

詳細は割愛しますが、タスクスケジューラで当該のタスクを無効にしてからリブート用のバッチを実行する手順としました。だがしかしです、これがタスクを無効にする手順がめんどい。

これです。右クリックで有効無効を切り替えるのが面倒なんです。
タスク

で、タスクの状態を変更するコマンドを使用して、リブート時にはタスクを無効化、ログオン時に有効化するようコマンドを追加しました。

まずは、コマンドの概要を。
タスクを無効にする場合のコマンド(要管理者権限)

schtasks /Change /TN "タスクの名称" /DISABLE

これで、タスクが無効になります。

タスクを有効にする場合コマンド

schtasks /Change /TN "タスクの名称" /ENABLE

これで、タスクが有効になります。
基本的、これで十分なんですが、私の場合は当該タスクをフォルダ分けしていたため、若干工夫が必要になります。

例えば、タスクの場所が
Ramdisk関連\フルバックアップ
Ramdisk関連\差分バックアップ
となっていた場合、コマンドでしているタスクの名称は"フルバックアップ"等ではなく"Ramdisk関連\フルバックアップ"のように、階層を明示してあげる必要があります。

その結果、フォルダに振り分けられたタスクの操作 タスクを無効にする場合コマンドは

schtasks /Change /TN "Ramdisk関連\フルバックアップ" /DISABLE

のように指定してあげればよいことになります。
ログオン時は、/ENABLEのスイッチがついたコマンドを実行することで手作業で再設定する必要がなくなります。

では、お役に立てれば幸いです。