¿Cómo puedo recuperar el estado de una tarea programada usando schtasks?

¿Cómo puedo recuperar el estado de una tarea programada usando schtasks?

Cuando ejecuto esto:

schtasks.exe /query  /tn "GoogleUpdateTaskMachineUA"

Entiendo esto:

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

¿Hay alguna forma de recuperar únicamente el estado?

Respuesta1

Pruebe schtasks /querycon /vla opción para salida detallada y /fo listformato de lista. Luego filtre los resultados con findel comando.

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

Obtienes una cuerda como esta

Status:         Running

Para extraer el valor del forcomando de uso de estado:

for /f "delims=: tokens=2" %a in ('schtasks /query /tn "GoogleUpdateTaskMachineUA" /v /fo list ^| find "Status:"') do @echo %a
  • Para usar en un archivo por lotes, reemplace %acon%%a
  • Para escapar de símbolos como |o >en foruso de comando^

Respuesta2

A menos que realmente tengas que usar schtasks.exe, usa PowerShell con todas sus opciones superiores de salida y formato:

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

o

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

Respuesta3

¿Hay alguna forma de recuperar únicamente el estado?

Utilice el siguiente comando:

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

Notas:

  • skip=3- ignora las líneas del encabezado
  • tokens=4- toma la cuarta ficha (el valor en la columna de estado)
  • Para usarlo en un archivo por lotes, reemplácelo %acon%%a

Uso de ejemplo:

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

Otras lecturas

Respuesta4

Si está escribiendo un script de Powershell con Windows 7 y no puede usarlo Get-ScheduledTask, podría considerar usar:

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

Se parece a esto:

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

información relacionada