问题描述
我需要 schtasks
命令显示的 TaskName 和 Status 列。
我尝试了以下方法:
for /f "tokens=1,3 delims= " %i in ('schtasks') DO echo %i
C:\Windows\system32>schtasks
Folder: \Microsoft\Windows\WwanSvc
TaskName Next Run Time Status
NotificationTask N/A Ready
Folder: \Microsoft\XblGameSave
TaskName Next Run Time Status
XblGameSaveTask N/A Ready
示例所需的输出:
Folder: \Microsoft\Windows\WwanSvc
TaskName Status
NotificationTask Ready
Folder: \Microsoft\XblGameSave
TaskName Status
XblGameSaveTask Ready
解决方法
虽然它没有提供与您想要的示例完全相同的输出,但以下内容对我来说似乎是可用的,(和更好的):
schtasks /query /fo list | findstr /r "^Folder: ^TaskName: ^Status: ^$"
应该提供如下输出:
Folder: \Microsoft\Windows\WwanSvc
TaskName: \Microsoft\Windows\WwanSvc\NotificationTask
Status: Ready
Folder: \Microsoft\XblGameSave
TaskName: \Microsoft\XblGameSave\XblGameSaveTask
Status: Ready
顺便说一句,我不确定您打算使用哪个版本的 Windows,但肯定是从 Windows Vista 到 Windows 10,这是我习惯从 schtasks
看到的输出格式:
Folder: \Microsoft\Windows\WwanSvc
TaskName Next Run Time Status
======================================== ====================== ===============
NotificationTask N/A Ready
Folder: \Microsoft\XblGameSave
TaskName Next Run Time Status
======================================== ====================== ===============
XblGameSaveTask N/A Ready
这意味着您提供的代码的输出将如下所示:
Folder:
TaskName
========================================
NotificationTask
Folder:
TaskName
========================================
XblGameSaveTask
这也意味着要获得您想要的输出,您需要省略表格标题边框以及第二个表格列。
鉴于此,这里有一种相当 OTT 的方法,可以通过 batch-file 实现这一目标:
@Echo Off & SetLocal EnableExtensions DisableDelayedExpansion
Set "{= "
For /F "Delims=" %%G In ('%SystemRoot%\System32\schtasks.exe /Query ^
^| %SystemRoot%\System32\findstr.exe /R "^[^=]"') Do (Set "}=%%G"
SetLocal EnableDelayedExpansion & Set "}=!}: =|!"
For /F "Tokens=1,3 Delims=|" %%H In ("!}:| =||!") Do If "%%I" == "" (
Echo %%H) Else Set "z=%%H%{%" & Echo=!z:~,41!%%I
EndLocal)
Pause
这应该为您输出:
Folder: \Microsoft\Windows\WwanSvc
TaskName Status
NotificationTask Ready
Folder: \Microsoft\XblGameSave
TaskName Status
XblGameSaveTask Ready
,
使用 PowerShell 非常简单。
Get-ScheduledTask | Select-Object -Property TaskPath,TaskName,State | Format-List *
如果您无法运行 PowerShell 控制台,可以从 cmd.exe 运行。
powershell -NoLogo -NoProfile -Command ^
"Get-ScheduledTask | Select-Object -Property TaskPath,State | Format-List *"