robocopy の動作をタスクスケジューラで止める方法 | 新人SEの備忘録


ファイルサーバーのリプレースの際に使用する robocopy の バッチファイル。
ファイルサーバーのデータ移行は、営業時間外にだけ行いたいですよね。
そこで robocopy を深夜だけ動作させるために、タスクスケジューラで開始・停止を設定しました。

でも robocopy が全然停止してくれないんです。
このタスクスケジューラを使用した robocopy の停止にドはまりしたので、備忘録として記録しておきます。

タスクキルを使うべし

解決方法を結論から言うと、タスクキルで強制終了しました。
タスクスケジューラの停止機能では、robocopy は止められないみたいです。

私の予想では、タスクスケジューラでは robocopy が干渉できる範囲外だと考えています。
タスクスケジューラは、直接 robocopy を動作させているわけでは無いです。
タスクスケジューラはコマンドプロンプトに動作命令を出し、コマンドプロンプトが robocopy を動作命令を出しています。

同様にタスクスケジューラの停止命令はコマンドプロンプトに送られます。
停止命令を受けたコマンドプロンプトは即座に停止するので、robocopy には何の指令も行かないんですね。
つまり robocopy は停止命令を受けていないので動き続けるわけです。

bat ファイルのコード

使用した bat ファイルのコードを示します。
どちらも移行先のサーバーで動作させています。

robocopy の開始

オプションでテストランモード(/L)が入っています。
実際に使用する時は、テストランモードを削除して使用してください。
そのた詳しいオプションについては、参考サイトをご覧ください。

cd \
robocopy [送信元フォルダ名(例:\\192.168.0.1\hoge)] [送信先フォルダ名(例:D:hoge)] /L /B /MIR /COPY:DATOUS /DCOPY:DAT /XO /R:1 /W:1 /NP /NFL /NDL /LOG+:C:\copy-result.log
pause

robocopy の終了

taskkill /F /IM "robocopy.exe"

タスクスケジューラの設定

後日更新

ミス設定例

後日更新

参考サイト

【robocopy】使い方と例, オプション一覧 〜差分バックアップ/MIR, アクセス権移行等, ファイルサーバ移行のノウハウ〜 | SEの道標
https://milestone-of-se.nesuke.com/knowhow/robocopy/file-mail-sv-migration/