我正在尝试将不需要的任务输出到 Windows 命令行。最终结果应该是我基本上通过单击按钮来终止所有不需要的任务。但为了避免出现任何问题,我现在输出任务名称。我知道还有其他方法,比如在 msconfig
或 regedit
上禁用它们,但现在这就是我想要的。
问题是我已经很久没有使用控制台了,这让我有点困惑。我有下面的代码输出所有正在运行的任务,但它不会停止输出 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/