ROBOCOPYをタスクスケジューラに登録する方法

タスクスケジューラに”SCHTASKS”というコマンドでタスクを登録することが出来るコマンドがあるのですが、
実行するタスクの文字列に半角スペースが含まれていると上手く登録することが出来ません。

エラー: 無効な引数またはオプションです - 'G:\hogehoge\A'。
"SCHTASKS /CREATE /?" と入力すると使用法が表示されます。

“SCHTASKS”を利用して”ROBOCOPY”を登録する場合には、どうしてもコマンドの中に半角スペースが入ってしまいます。
これを回避するためには、”\”でダブルクォーテーションをさらにエスケープさせる必要があります。

タスク登録したい実際のコマンド

例えばG:\hogehoge\Aの内容をG:\hogehoge\Bにミラーリングする場合のコマンドはコマンドプロンプトに実行する形であれば以下のように入力します。

"C:\Windows\System32\Robocopy.exe" "G:\hogehoge\A" "G:\hogehoge\B" /COPY:D /MIR /MON:5 /MOT:5

SCHTASKSに記載する際の\を反映させたコマンド

ただし、SCHTASKSの記載にROBOCOPYの内容を含める場合には、/TRの後の文字列の”の前に\を含めるように気を付けて以下のように登録します。

Rem G:\hogehoge\Aの内容をG:\hogehoge\Bにミラーリング
SCHTASKS /CREATE /S <サーバ名> /SC ONSTART /TN "タスク登録名" /RU "タスク実行アカウント名" /RP "パスワード" /TR "\"C:\Windows\System32\Robocopy.exe\" \"G:\hogehoge\A\" \"G:\hogehoge\B\" /COPY:D /MIR /MON:5 /MOT:5

ほかにも、SCHTASKSに引数を指定した実行ファイルを登録するときにも、同じように利用できます。

SCHTASKSの利用方法を確認する際には、以下のコマンドで確認します。

SCHTASKS /?

A Scheduled Task Does Not Run When You Use Schtasks.exe to Create It and When the Path of the Scheduled Task Contains a Space
http://support.microsoft.com/kb/823093/en-us

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です