#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
}}}

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS