这么多年之后,你可能会认为我做了一些Windows批处理文件。但你错了。我正在更新一个批处理文件,并遇到以下声明:
TASKKILL /F /FI "WINDOWTITLE eq SIM RH*" /IM perl.exe为什么是/FI和/IM?这两个条款连在一起了吗?如果我不使用/IM,正确的进程就会被杀死。
唯一有意义的方法是,如果它们被终止,并且只杀死带有该窗口标题的任务,并且是perl.exe任务。
发布于 2016-12-06 09:26:38
是的,他们加入了!
/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这将给您留下一个标题为3的命令提示符,所有其他命令都将关闭。
将ne更改为eq只会用标题3关闭命令提示符,留下1, 2, 4, 5和yourBatch.bat。
发布于 2016-12-06 09:37:00
是。给定的/FI "WINDOWTITLE eq SIM RH*"选项将根据窗口标题筛选以SIM RH开头的进程。taskkill指定,如果给出了这样的筛选器,则/IM选项将接受通配符*。
没有说的是,添加一个过滤器而忽略了/IM似乎意味着/IM *__。
您可以使用以下命令验证这种行为,该命令将在两个单独的窗口中打开一个常规shell和一个powershell,然后仅通过指定一个窗口标题筛选器就可以关闭两个窗口。
start "testp1" cmd && start "testp2" powershell && taskkill /F /FI "WINDOWTITLE eq testp*" https://stackoverflow.com/questions/40990453
复制相似问题