【问题标题】:Windows TASKKILL syntax issueWindows TASKKILL 语法问题
【发布时间】:2016-12-06 07:59:17
【问题描述】:

这么多年过去了,你会认为我做了一些某种类型的 Windows 批处理文件。但你错了。我正在更新一个批处理文件,遇到如下语句:

TASKKILL /F /FI "WINDOWTITLE eq SIM RH*" /IM perl.exe

为什么同时使用 /FI 和 /IM?这两个子句是anded在一起的吗?如果我不使用 /IM,正确的进程就会被杀死。

唯一有意义的方法是,如果它们结束并仅终止具有该窗口标题的任务并且是 perl.exe 任务。

【问题讨论】:

  • /FI 是根据taskkill /? 的过滤器所以这应该只杀死标题为SIM RH 的perl.exe 窗口我猜...

标签: windows batch-file taskkill


【解决方案1】:

是的,它们被添加了!

/IM 将杀死具有不同进程 ID 的 所有 任务
/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 个标题为 3 的命令提示符。所有其他命令提示符都将关闭。

ne 更改为eq 只会关闭标题为3 的命令提示符,留下1, 2, 4, 5yourBatch.bat

【讨论】:

    【解决方案2】:

    是的。给定的/FI "WINDOWTITLE eq SIM RH*" 选项将按以SIM RH 开头的窗口标题过滤进程。 reference for taskkill 指定如果给出这样的过滤器,则/IM 选项接受通配符*

    没有说的是,添加过滤器并省略/IM 似乎暗示/IM *

    您可以使用以下命令验证此行为,该命令将在两个单独的窗口中打开一个常规 shell 和一个 powershell,然后仅通过指定一个窗口标题过滤器来终止这两个窗口。

    start "testp1" cmd && start "testp2" powershell && taskkill /F /FI "WINDOWTITLE eq testp*" 
    

    【讨论】:

      猜你喜欢
      • 2018-12-20
      • 2015-07-23
      • 2017-04-17
      • 1970-01-01
      • 2014-05-25
      • 1970-01-01
      • 2011-05-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多