regex - 如何在 Windows CMD 中使用正则表达式过滤 schtasks 输出以返回包含“计划类型:每日”的结果块?
问题描述
如何在 Windows CMD 中使用正则表达式过滤 schtasks 输出以返回包含“计划类型:每日”的结果块?
我希望能够过滤包含“计划类型:每日”的结果块,如下所示:
schtasks /query /fo LIST /v | findstr /r "\n\n[.|\n]*Daily[.|\n]*\n\n"
解决方案
这是一种使用 PowerShell 中更完整的正则表达式功能来查找计划类型的方法:每日任务。
& schtasks.exe /query /fo LIST /v |
ForEach-Object {
if ($_ -match '^TaskName:\s*(.*)$') { $CurrentTask = $Matches[1] }
if ($_ -match '^Schedule Type:\s*Daily\s*$') { $CurrentTask }
}
如果您必须从 cmd.exe 运行它,可能会使用以下内容。
@powershell.exe -NoLogo -NoProfile -Command ^
"& schtasks.exe /query /fo LIST /v |" ^
"ForEach-Object {" ^
"if ($_ -match '^TaskName:\s*(.*)$') { $CurrentTask = $Matches[1] }" ^
"if ($_ -match '^Schedule Type:\s*Daily\s*$') { $CurrentTask }" ^
"}"