如何使用 schtasks 检索计划任务的状态?

如何使用 schtasks 检索计划任务的状态?

当我运行这个时:

schtasks.exe /query  /tn "GoogleUpdateTaskMachineUA"

我明白了:

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

有没有办法仅检索状态?

答案1

尝试schtasks /query使用/v选项进行详细输出和/fo list列表格式。然后使用find命令过滤结果。

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

进一步阅读

答案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

相关内容