
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 /query
con /v
la opción para salida detallada y /fo list
formato de lista. Luego filtre los resultados con find
el comando.
schtasks /query /tn "GoogleUpdateTaskMachineUA" /v /fo list | find "Status:"
Obtienes una cuerda como esta
Status: Running
Para extraer el valor del for
comando 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
%a
con%%a
- Para escapar de símbolos como
|
o>
enfor
uso 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 encabezadotokens=4
- toma la cuarta ficha (el valor en la columna de estado)- Para usarlo en un archivo por lotes, reemplácelo
%a
con%%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
- Un índice AZ de la línea de comando CMD de Windows- Una excelente referencia para todo lo relacionado con la línea cmd de Windows.
- para /f- Comando de bucle contra los resultados de otro comando.
- tareas- Crear/editar un trabajo/tarea programada. El trabajo se puede crear en la computadora local o remota.
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