我需要从schtasks
命令显示的TaskName和Status列。
我试了如下:
for /f "tokens=1,3 delims= " %i in ('schtasks') DO echo %i
输出不好看。如果我运行schtasks
的电流输出:
C:Windowssystem32>schtasks
Folder: MicrosoftWindowsWwanSvc
TaskName Next Run Time Status
NotificationTask N/A Ready
Folder: MicrosoftXblGameSave
TaskName Next Run Time Status
XblGameSaveTask N/A Ready
期望输出示例:
Folder: MicrosoftWindowsWwanSvc
TaskName Status
NotificationTask Ready
Folder: MicrosoftXblGameSave
TaskName Status
XblGameSaveTask Ready
虽然它不能提供与您期望的示例完全相同的输出,但对我来说,下面的(并且更好)似乎是可用的:
schtasks /query /fo list | findstr /r "^Folder: ^TaskName: ^Status: ^$"
应该提供如下输出:
Folder: MicrosoftWindowsWwanSvc
TaskName: MicrosoftWindowsWwanSvcNotificationTask
Status: Ready
Folder: MicrosoftXblGameSave
TaskName: MicrosoftXblGameSaveXblGameSaveTask
Status: Ready
顺便说一句,我不确定你打算用什么版本的Windows,但肯定从Windows Vista到Windows 10,这是我习惯从schtasks
看到的输出格式:
Folder: MicrosoftWindowsWwanSvc
TaskName Next Run Time Status
======================================== ====================== ===============
NotificationTask N/A Ready
Folder: MicrosoftXblGameSave
TaskName Next Run Time Status
======================================== ====================== ===============
XblGameSaveTask N/A Ready
这意味着您的输出,从您提供的代码,看起来像这样:
Folder:
TaskName
========================================
NotificationTask
Folder:
TaskName
========================================
XblGameSaveTask
这也意味着要得到您想要的输出,您需要省略表头边框,以及第二个表列。
考虑到这一点,这里有一个相当OTT的方法可能从批处理文件中实现:
@Echo Off & SetLocal EnableExtensions DisableDelayedExpansion
Set "{= "
For /F "Delims=" %%G In ('%SystemRoot%System32schtasks.exe /Query ^
^| %SystemRoot%System32findstr.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: MicrosoftWindowsWwanSvc
TaskName Status
NotificationTask Ready
Folder: MicrosoftXblGameSave
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,TaskName,State | Format-List *"