Programming Field

Schtasks /Query - DOS/コマンドプロンプト コマンド一覧

登録済みのタスクを表示します。Schtasksのコマンド(オプション)の1つです。

構文

schtasks[.exe] /Query [/S <remote-system> [/U <user-name> [/P [<password>]]]]
    [/FO <output-format> [/NH] [/V] | /XML [ONE]]
    [/TN <task-name>] [/HRESULT]

オプション一覧

※ 「/XML」を用いる場合は「/FO」「/NH」「/V」を指定することができません。

/S <remote-system> タスクが登録されているコンピューター(ローカル/リモート)の名前を指定します。IPアドレスやホスト名を指定します。省略した場合はローカルコンピューターが対象になります。
/U <user-name> [/P [<password>]]

コンピューター名を指定した際のログイン名・パスワードを指定します。<user-name> にはドメイン名を指定することができます(「ドメイン名\ユーザー名」の形式です)。省略した場合はこのコマンドを実行したユーザーが使用されます。

パスワード指定は、「/P [<password>]」全体を省略した場合はパスワードなし、「/P」のみ指定して「<password>」を省略した場合はプロンプトを表示してユーザーにパスワード入力を促すようになります(このプロンプトでは入力されたパスワードが「*」で表示されます)。

/FO <output-format>

出力する形式を指定します。指定できる値は以下の3種類です。/FO を省略した場合は「TABLE」になります。

指定する値意味
TABLE疑似的なテーブル表記で出力します。複数のタスクを並べて見ることができますが、「/V」を指定した場合は横幅を多く使うため、既定のコマンドプロンプトの幅では表示が崩れる場合があります。
LISTタスクごとに箇条書きのような形式で情報を表示します。見やすさは向上しますが、/TN を指定しない場合は出力量が多くなる場合があります。なお、LISTを指定した場合は「/NH」オプションを使用することができません。
CSVCSV形式で出力します。Forコマンドに渡すなど、出力結果を解析したい場合に便利です。
/NH TABLEやCSV形式で出力する際にヘッダーを出力しません。
/V 詳細出力を行います。タスクの詳細を確認することができますが、/TN を指定しない場合は非常に多い出力となる場合があります。
/XML [ONE]

タスクの情報をXML形式で出力します。/TN を指定しない場合は「<Tasks>」をルートとして複数の「<Task>」を持つXMLが出力されます。「/XML ONE」と指定するとXML宣言がTaskごとに出力されなくなり、単体のXMLとして成立する形になります。

/TN を指定した場合は「<Task>」をルートとしたXMLが出力されます。なお、このとき「/XML」と「/XML ONE」で出力される形式は変わりません。

/TN <task-name>

タスク名を指定します。タスク名にスペース文字が含まれている場合は「" "」で括ります。タスクがフォルダー階層内に存在する場合はそのパスも含めて指定します。(先頭に「\」を付けることもできますが、付けない場合と変化はありません。)

なお、<task-name> に「*」を指定することはできません。すべてのタスクを出力する場合は「/TN」指定を省略します。

/HRESULT [Windows 10?以降] Schtasksコマンドの終了コードを HRESULT にします。エラー発生時に詳細なハンドリングを行いたい場合に使用します。

解説

「schtasks /query」で出力されるタスクは、「/TN」を指定した場合はそのタスクのみ、指定しなかった場合はすべてのタスクが出力されます。一部のタスクのみを出力させる方法はありません。すべてのタスクを出力する場合、システムによって登録されているタスクも出力されるため、量が多くなる場合があります。

「/TN」と「/XML」の両方のオプションを指定して出力される内容は、そのまま「schtasks /create」の「/XML」パラメーターとして指定できる形式になります。そのため、タスクの情報をバックアップしておきたい場合に有用です。

サンプル1

schtasks /query

すべてのタスクの名前・次回実行時刻・状態を出力します。

サンプル2 (バッチファイル)

@echo off
setlocal enabledelayedexpansion
for /f "tokens=1 delims=," %%A in ('schtasks /query /fo csv /nh') do (
    set "FILE_NAME=%%~A"
    set "FILE_NAME=!FILE_NAME:\=_!
    schtasks /query /tn %%A /xml > "W:\TaskBackup\!FILE_NAME!.xml"
)

現在登録されているタスクを1つずつXMLファイルに(「W:\TaskBackup」ディレクトリに)出力します。「schtasks /query /fo csv /nh」の内容をForコマンドに解析させ、CSVの先頭に入るであろうタスク名を取り出してさらに「schtasks /query」に渡してXMLデータを得ています。

※ タスクをバックアップしたいのであれば、C:\Windows\System32\Tasks 以下にあるファイルをコピーする方法が簡単です。上記はあくまでも「schtasks /query」のサンプルとして書いているコードになります。
※ タスク名に「,」が使用できるため、「,」が含まれたタスク名が存在する場合上記のコードではうまくいきません。

関連項目