답변:
다음 명령을 사용하십시오.
for /f "usebackq skip=3 tokens=4" %a in (`schtasks.exe /query /tn "GoogleUpdateTaskMachineUA"`) do @echo %a
노트:
skip=3
-헤더 라인을 무시tokens=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
for /f "usebackq skip=3 tokens=7" %a in (`schtasks.exe /query /tn "Refresh Dashboard Cache"`) do @echo %a
시도 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
^
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
나는 이것에 대한 좋은 대답을 찾았고, 가까운 곳을 찾았습니다. 내가 끝내었던 것은 다음과 같습니다.
$taskName="SomeTask"
$serverName="yourserver"
$status = (schtasks.exe /query /tn "$taskName" /s $serverName /v /fo CSV | ConvertFrom-Csv | Select-Object -Property "Status").Status
작업의 모든 항목을 원하면 다음과 유사한 작업을 수행 할 수 있습니다 ...
$task= schtasks.exe /query /tn "$taskName" /s $serverName /v /fo CSV | ConvertFrom-Csv | Select-Object
그런 다음 작업하려는 속성을 선택할 수 있습니다.
$task.Status
$task."Last Result"
공백이있는 속성 주위에 따옴표를 사용해야합니다!
분명히하기 위해 Get-ScheduledTask를 사용할 수 없을 때 내 대답은 Powershell을 사용하고 있으며 Windows 7 또는 Windows Server 2008을 실행하는 경우에는 그렇지 않습니다. 한 가지 답변으로 상태를 얻는 방법을 제공하지만이 방법은 다음과 같습니다. 이해하고 협력하기 쉽습니다. 더군다나 누군가 속성이있는 열을 구문 분석하지 않고 예약 된 작업의 다른 속성을 얻는 데 관심이있을 수 있습니다. 요컨대 내 대답은 내가 찾고 있던 솔루션 이므로 공유 할 것이라고 생각했습니다. 다른 생각을 가진 개인을 위해.
space
이름이 없는 작업에만 적합 합니다. 작업 이름에 공백이 있으면 작동하지 않습니다. 아직 시도하지는 않았지만tokens
출력에서 공백을 계산 하여 값 을 조정하려고하면 작동 할 수 있습니다 .