schtasks を使用してスケジュールされたタスクのステータスを取得するにはどうすればよいですか?

schtasks を使用してスケジュールされたタスクのステータスを取得するにはどうすればよいですか?

これを実行すると:

schtasks.exe /query  /tn "GoogleUpdateTaskMachineUA"

私はこれを理解します:

Folder: \
TaskName                                 Next Run Time          Status
======================================== ====================== ===============
GoogleUpdateTaskMachineUA                N/A                    Disabled

ステータスのみを取得する方法はありますか?

答え1

詳細出力とリスト形式のオプションschtasks /queryを試してください。次に、コマンドで結果をフィルタリングします。/v/fo listfind

schtasks /query /tn "GoogleUpdateTaskMachineUA" /v /fo list | find "Status:"

このような文字列が得られます

Status:         Running

ステータスの値を抽出するには、for次のコマンドを使用します。

for /f "delims=: tokens=2" %a in ('schtasks /query /tn "GoogleUpdateTaskMachineUA" /v /fo list ^| find "Status:"') do @echo %a
  • バッチファイルで使用するには%a%%a
  • コマンド内の|や のような記号をエスケープするには、>for^

答え2

を本当に使用する必要がある場合を除きschtasks.exe、優れた出力および書式設定オプションを備えた PowerShell を使用してください。

Get-ScheduledTask | ? TaskName -eq GoogleUpdateTaskMachineUA | Select State | ft -AutoSize

または

(Get-ScheduledTask | Where TaskName -eq GoogleUpdateTaskMachineUA ).State

答え3

ステータスのみを取得する方法はありますか?

次のコマンドを使用します。

for /f "usebackq skip=3 tokens=4" %a in (`schtasks.exe /query /tn "GoogleUpdateTaskMachineUA"`) do @echo %a

ノート:

  • skip=3- ヘッダー行を無視する
  • tokens=4- 4番目のトークン(ステータス列の値)を取得します
  • バッチファイルで使用する場合%aは、%%a

使用例:

F:\test>schtasks.exe /query  /tn "GoogleUpdateTaskMachineUA"

Folder: \
TaskName                                 Next Run Time          Status
======================================== ====================== ===============
GoogleUpdateTaskMachineUA                03/02/2016 12:17:00    Ready

F:\test>for /f "usebackq skip=3 tokens=4" %a in (`schtasks.exe /query /tn "GoogleUpdateTaskMachineUA"`) do @echo %a
Ready

参考文献

  • Windows CMD コマンドラインの AZ インデックス- Windows コマンド ラインに関連するあらゆることに関する優れたリファレンス。
  • /fの場合- 別のコマンドの結果に対してコマンドをループします。
  • タスク- スケジュールされたジョブ/タスクを作成/編集します。ジョブは、ローカル コンピューターまたはリモート コンピューターで作成できます。

答え4

Windows 7 を使用して Powershell スクリプトを記述していて、 を使用できない場合はGet-ScheduledTask、次の使用を検討してください。

$status = ((schtasks /query /S 'yourServer' /TN yourTask)[4] -split ' +')[2]

次のようになります:

### Running this:
schtasks /query /S 'yourServer' /TN yourTask
### Leads to the output below.

Folder: \
TaskName                                 Next Run Time          Status         
======================================== ====================== ===============
yourTask                                 N/A                    Running   

### Running this:
$status = ((schtasks /query /S 'yourServer' /TN yourTask)[4] -split ' +')[2]
Write-Host "$($status)"
### Leads to the output below

Running

関連情報