Windows TASKKILL 语法问题
Windows TASKKILL syntax issue
这么多年过去了,您可能会认为我已经完成了一些 Windows 某种类型的批处理文件。但你错了。我正在更新批处理文件并遇到以下语句:
TASKKILL /F /FI "WINDOWTITLE eq SIM RH*" /IM perl.exe
为什么同时使用 /FI 和 /IM?这两个子句是连在一起的吗?如果我离开 /IM,正确的进程就会被杀死。
唯一有意义的方法是,如果它们结束并仅终止具有 window 标题的任务并且是 perl.exe 任务。
是的,它们已添加!
/IM
将杀死 所有 具有不同 process-IDs
的任务
/FI
对其应用过滤器。你可以用这样的东西来测试它:
@echo off
for /L %%i in (1,1,5) do start "%%i" cmd.exe
timeout /t 3
taskkill /F /FI "WindowName ne 3" /IM cmd.exe
这应该会给您留下 1 个 command-prompt,标题为 3。所有其他的都将关闭。
将 ne
更改为 eq
只会关闭标题为 3
的 command-prompt,留下 1, 2, 4, 5
和 yourBatch.bat
是的。给定的 /FI "WINDOWTITLE eq SIM RH*"
选项将按 window 以 SIM RH
开头的标题过滤进程。 reference for taskkill
指定如果给出这样的过滤器,则 /IM
选项接受通配符 *
。
没有说的是添加过滤器并省略 /IM
似乎暗示 /IM *
.
您可以使用以下命令验证此行为,这将在两个单独的 windows 中打开一个常规 shell 和一个电源 shell,然后将两者都杀死 windows只需指定 window 标题过滤器即可。
start "testp1" cmd && start "testp2" powershell && taskkill /F /FI "WINDOWTITLE eq testp*"
这么多年过去了,您可能会认为我已经完成了一些 Windows 某种类型的批处理文件。但你错了。我正在更新批处理文件并遇到以下语句:
TASKKILL /F /FI "WINDOWTITLE eq SIM RH*" /IM perl.exe
为什么同时使用 /FI 和 /IM?这两个子句是连在一起的吗?如果我离开 /IM,正确的进程就会被杀死。
唯一有意义的方法是,如果它们结束并仅终止具有 window 标题的任务并且是 perl.exe 任务。
是的,它们已添加!
/IM
将杀死 所有 具有不同 process-IDs
的任务
/FI
对其应用过滤器。你可以用这样的东西来测试它:
@echo off
for /L %%i in (1,1,5) do start "%%i" cmd.exe
timeout /t 3
taskkill /F /FI "WindowName ne 3" /IM cmd.exe
这应该会给您留下 1 个 command-prompt,标题为 3。所有其他的都将关闭。
将 ne
更改为 eq
只会关闭标题为 3
的 command-prompt,留下 1, 2, 4, 5
和 yourBatch.bat
是的。给定的 /FI "WINDOWTITLE eq SIM RH*"
选项将按 window 以 SIM RH
开头的标题过滤进程。 reference for taskkill
指定如果给出这样的过滤器,则 /IM
选项接受通配符 *
。
没有说的是添加过滤器并省略 /IM
似乎暗示 /IM *
.
您可以使用以下命令验证此行为,这将在两个单独的 windows 中打开一个常规 shell 和一个电源 shell,然后将两者都杀死 windows只需指定 window 标题过滤器即可。
start "testp1" cmd && start "testp2" powershell && taskkill /F /FI "WINDOWTITLE eq testp*"