タスクスケジューラのタスクの名称変更をするバッチ
概要
タスクスケジューラのタスク名変えられないかゆい所に手が届くと素敵だと思いませんか。
実際はエクスポートして新しい名前でインポートして古い方を削除してます。
実装
ソースコード
@echo off setlocal set tempTask=%temp%\tmptask set oldName=%1 set newName=%2 rem 引数チェック set result=エラー: 引数不正[空文字] if "%oldName%" == "" ( goto :EchoResult ) if "%newName%" == "" ( goto :EchoResult ) if %oldName% == %newName% ( set result=エラー: 引数不正[変更前後が同一名称] goto :EchoResult ) rem クエリによる出力 schtasks /Query /XML /TN %oldName% > %tempTask% if not %errorlevel% == 0 ( set result=エラー: タスクのXMLエクスポート失敗 goto :EchoResult ) rem 新規タスクのインポート schtasks /Create /XML %tempTask% /TN %newName% if not %errorlevel% == 0 ( set result=エラー: タスクのXMLインポート失敗 goto :EchoResult ) rem 命名変更前のタスクの削除 schtasks /Delete /F /TN %oldName% if not %errorlevel% == 0 ( set result=エラー: 名称変更前のタスクの削除失敗 goto :EchoResult ) set result=タスクの名称変更完了 :EchoResult echo %result% endlocal exit
使い方(RenameTask.batというファイルで作った前提)
RenameTask.bat *変更対象のタスク名* *変更後のタスク名*
変更対象のタスク名
- 変更対象のタスク名。
- タスクスケジューラの直下で作ればそのままの名前。
- フォルダを作った中のタスクの場合はフォルダ名も含めて指定すること。
- 例:Automations\すこし自動化するタスク
変更後のタスク名
- 変更後のタスク名。
- 変更対象のタスク名と同様、フォルダを考慮した指定をしてください。
- 例:Automations\すごく自動化するタスク
参考(technet)
適当感想
こういう作ったバッチのコマンドライン引数とかを説明する時の定石っていうかうまい書き方ってあるのかなぁ。
ちょっとスタイル出来上がってないので既存のベストプラクティスが欲しい。
以上!