batch-file - 如何循环执行 Windows cmd 中的任务并仅在任务不在列表中时才输出任务?

标签 batch-file

我正在尝试将不需要的任务输出到 Windows 命令行。最终结果应该是我基本上通过单击按钮来终止所有不需要的任务。但为了避免出现任何问题,我现在输出任务名称。我知道还有其他方法,比如在 msconfigregedit 上禁用它们,但现在这就是我想要的。

问题是我已经很久没有使用控制台了,这让我有点困惑。我有下面的代码输出所有正在运行的任务,但它不会停止输出 mylist 数组中的任务。我认为问题是我的嵌套 for 循环,但我不知道将两个数组传递到一个列表以便我可以检查它们的任何其他方法。任何帮助将不胜感激。

@echo off
set mylist=csrss.exe, dwm.exe, System, smss.exe Rem<<List
for /f "tokens=1" %%a in ('tasklist') do ( Rem<<This returns process name
    for %%b in ('%mylist%') do ( Rem<<b is MEANT to be each process in list
        if not %%a == %%b ( Rem<<If anything in tasklist is in mylist, don't include it
            echo %%a) Rem<<Output processes NOT in mylist.
    )
)
pause

最佳答案

有了 findstr 的帮助,这就容易多了:

@echo off
set "mylist=csrss.exe dwm.exe System smss.exe"
for /f "tokens=1" %%a in ('tasklist^|findstr /biv "%mylist%"') do echo %%a 
pause

findstr 开关:
- b = 行首
- i = 忽略大写(可选)
- v = 排除给定的字符串

关于batch-file - 如何循环执行 Windows cmd 中的任务并仅在任务不在列表中时才输出任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53487151/

相关文章:

windows - 如何最小化我的 bat 文件中的命令提示符

windows - 如何从 Windows cmd "dir"中仅获取文件大小?

visual-studio-2010 - 创建批处理文件以打开 Visual Studio 2010 解决方案

mysql - 批量自动按回车键

windows - 如何在批处理脚本中的多个文件上重命名和添加递增数字后缀?

batch-file - mysqldump 批处理脚本以输出单个表以进行选择性还原

batch-file - 无法通过 BAT 文件编辑注册表,但命令行工作正常

batch-file - 简单如果在 .bat 或 .cmd 中检查是否在安全模式下启动

windows - 为什么 CMD 转义字符会变魔术而不是转义新行

batch-file - 批处理文件列出目录中的所有文件夹并输出到txt