#author("2021-08-04T14:55:44+09:00","default:nobuoki","nobuoki") #author("2021-08-04T14:57:20+09:00","default:nobuoki","nobuoki") * はじめに [#ndc203e9] Windows10 タスクスケジューラ のタスクを有効/無効にするバッチファイルです - CLIでのタスクスケジューラ操作は schtasks.exe を使う [#o94987f9] -- [[schtasks を変更します。 | Microsoft Docs>https://docs.microsoft.com/ja-jp/windows-server/administration/windows-commands/schtasks-change]] [#x7bcedbd] - CLIでのタスクスケジューラ操作は schtasks.exe を使う -- [[schtasks を変更します。 | Microsoft Docs>https://docs.microsoft.com/ja-jp/windows-server/administration/windows-commands/schtasks-change]] - タスク変更は Administrators 権限が必要、今回はバッチファイル内で権限昇格させる方法で実装してみます -- [[バッチを自動で管理者権限に昇格する方法 | Correct-Log —コレログ—>https://correct-log.com/bat_auto_admin/]] - 現在のタスクの状態に応じて処理を変えたい -- find コマンドをパイプで2段重ねて errorlevel を評価する * バッチファイル [#l513632e] * バッチファイル [#e602a335] 第一引数にタスク名を指定します toggle-task.bat "My Task 01" toggle-task.bat #prism(batch){{{ @rem echo off whoami /priv | find "SeDebugPrivilege" > nul if %errorlevel% neq 0 ( @powershell start-process "%~0 %*" -verb runas exit /b ) rem ここから管理者権限の処理 if "%1"=="" ( echo ERROR: タスク名を指定して下さい pause exit /b ) schtasks /query /tn "%1" /fo list /v | find "タスクの状態" | find "有効" if %errorlevel% equ 0 ( schtasks /change /tn "%1" /disable timeout /t 5 exit /b ) schtasks /query /tn "%1" /fo list /v | find "タスクの状態" | find "無効" if %errorlevel% equ 0 ( schtasks /change /tn "%1" /enable timeout /t 5 exit /b ) echo ERROR: タスクが見つかりません: "%1" pause exit /b }}}