
Quando executo isso:
schtasks.exe /query /tn "GoogleUpdateTaskMachineUA"
Eu entendi isso:
Folder: \
TaskName Next Run Time Status
======================================== ====================== ===============
GoogleUpdateTaskMachineUA N/A Disabled
Existe alguma maneira de recuperar apenas o status?
Responder1
Tente schtasks /query
com /v
opção para saída detalhada e /fo list
formato de lista. Em seguida, filtre os resultados com find
o comando.
schtasks /query /tn "GoogleUpdateTaskMachineUA" /v /fo list | find "Status:"
Você recebe uma corda assim
Status: Running
Para extrair o valor do status, use for
o comando:
for /f "delims=: tokens=2" %a in ('schtasks /query /tn "GoogleUpdateTaskMachineUA" /v /fo list ^| find "Status:"') do @echo %a
- Para usar em arquivo em lote, substitua
%a
por%%a
- Para escapar de símbolos como
|
ou>
nofor
comando use^
Responder2
A menos que você realmente precise usar o schtasks.exe
, use o PowerShell com todas as suas opções superiores de saída e formatação:
Get-ScheduledTask | ? TaskName -eq GoogleUpdateTaskMachineUA | Select State | ft -AutoSize
ou
(Get-ScheduledTask | Where TaskName -eq GoogleUpdateTaskMachineUA ).State
Responder3
Existe alguma maneira de recuperar apenas o status?
Use o seguinte comando:
for /f "usebackq skip=3 tokens=4" %a in (`schtasks.exe /query /tn "GoogleUpdateTaskMachineUA"`) do @echo %a
Notas:
skip=3
- ignore as linhas do cabeçalhotokens=4
- pegue o 4º token (o valor na coluna de status)- Para usar em um arquivo em lote, substitua
%a
por%%a
Exemplo de uso:
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
Leitura adicional
- Um índice AZ da linha de comando do Windows CMD- Uma excelente referência para todas as coisas relacionadas à linha cmd do Windows.
- para /f- Comando de loop em relação aos resultados de outro comando.
- tarefas- Criar/editar um trabalho/tarefa agendada. O trabalho pode ser criado no computador local ou remoto.
Responder4
Se você estiver escrevendo um script Powershell usando o Windows 7 e não puder usar o Get-ScheduledTask
, considere usar:
$status = ((schtasks /query /S 'yourServer' /TN yourTask)[4] -split ' +')[2]
Se parece com isso:
### 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