我正在尝试让 Windows 进程符合某些特定条件,例如他们就像“123456.exe”,并试图用任务列表杀死他们。我正在尝试这样做:
FOR /F "usebackq tokens=2 skip=2" %i IN (`tasklist |findstr /r "[0-9].exe") DO taskkill /PID %i
这是不对的,我不知道为什么......任何人都可以给我一个提示吗? 提前致谢!
最佳答案
FOR /F "usebackq tokens=2" %i IN (`tasklist ^| findstr /r /b "[0-9][0-9]*[.]exe"`) DO taskkill /pid %i
几个变化:
- command_to_process 需要在命令的两边加上反引号 (``)。
- command_to_process 内部的管道(“|”)需要使用脱字符号(“^”)进行转义。
- 您的 findstr 命令将匹配所有在“.exe”之前有数字的进程。例如,“myapp4.exe”也会被杀死。我提供的版本将匹配仅包含数字的进程名称。
- “skip=2”选项将跳过 findstr 的前两行输出,而不是 tasklist。由于正则表达式不会匹配任务列表输出的前两行中的任何内容,因此您可以安全地删除跳过选项。
顺便说一句,如果您将此命令放在批处理脚本中,请记住使用“%%i”而不是“%i”作为您的参数,否则您将收到一条错误消息,如 i was unexpected此时。
关于windows - 从任务列表传递 PID 并使用任务列表终止进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9712399/