首页 > 解决方案 > 如何在 Windows CMD 中使用正则表达式过滤 schtasks 输出以返回包含“计划类型:每日”的结果块?

问题描述

如何在 Windows CMD 中使用正则表达式过滤 schtasks 输出以返回包含“计划类型:每日”的结果块?

我希望能够过滤包含“计划类型:每日”的结果块,如下所示:

schtasks /query /fo LIST /v | findstr /r "\n\n[.|\n]*Daily[.|\n]*\n\n"

因此,这是我希望命令返回的一个结果块的示例: 在此处输入图像描述

标签: regexwindowscmdfindstr

解决方案


这是一种使用 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 }" ^
        "}"

推荐阅读