batch-file - 批处理文件 - TASKKILL/FI "WINDOW TITLE ..."不起作用

标签 batch-file

我正在尝试制作一个批处理文件:

  • 启动 Internet Explorer
  • 等待 Internet Explorer 将本地 .html 文件加载到其 Web 浏览器中
  • 等待弹出窗口加载
  • 关闭在步骤 1 中打开的资源管理器窗口(不影响之前打开的任何网页)
  • 自行关闭

  • 除了使用下面显示的批处理文件的第 4 步之外,我已经完成了所有操作。
    cd "C:\Program Files\internet explorer"
    start "CloseMe" iexplore.exe "file://C:\ProgramData\Schneider Electric\Citect SCADA 2016\User\1173051_SM_STP\Files\Stony Mountain Institute Lift Station.html"
    TIMEOUT 3 & REM Waits 3
    TASKKILL /IM iexplore.exe /FI "WINDOWTITLE eq CloseMe - Internet Explorer"
    exit
    

    如果我注释掉 exit 命令并跳过第 5 步,我可以看到我收到的错误消息。这是信息:没有任务在指定条件下运行。

    我运行了这个命令(感谢 aschipfl)& 看起来我的窗口标题没有正确设置为 CloseMe。
    C:\ProgramData\Schneider Electric\Citect SCADA 2016\User\1173051_SM_STP\Files>tasklist /FI "IMAGENAME eq iexplore.exe" /v
    
    Image Name                     PID Session Name        Session#    Mem Usage Status          User Name                                              CPU Time Window Title
    ========================= ======== ================ =========== ============ =============== ================================================== ============ ========================================================================
    iexplore.exe                 18076 Console                    1     36,300 K Running         STONY-STP\Operator                                      0:00:00 MultiSmart - Internet Explorer
    iexplore.exe                 15864 Console                    1     40,448 K Running         STONY-STP\Operator                                      0:00:00 N/A
    iexplore.exe                 18072 Console                    1    155,600 K Running         STONY-STP\Operator                                      0:00:06 N/A
    
    C:\ProgramData\Schneider Electric\Citect SCADA 2016\User\1173051_SM_STP\Files>
    

    我在两个地方将窗口标题设置为 CloseMe。
  • 在批处理文件的第二行(向上滚动)
  • 在 .html 文件中(见下文)
    <title>CloseMe</title>  
    <BODY onLoad="popup('http://192.168.0.10/config.htm', 'Stony Mountain Institute Lift Station')"> 
    
    <SCRIPT TYPE="text/javascript">
       function popup(mylink, windowname) {  
          if (! window.focus)return true;  
             var href;
          if (typeof(mylink) == 'string') href=mylink;  
          else href=mylink.href;
          window.open(href, windowname, 'width=800,height=480,scrollbars=no');  
          //self.close(); 
          return false;
       }  
    </SCRIPT> 
    
  • 最佳答案

    Internet Explorer 从内部当前事件的选项卡的标题派生其主窗口标题。

    所以你会看到 Window Title在任务列表的输出中,基于当前在 Internet Explorer 中处于事件状态的选项卡的标题。

    从 Internet Explorer 7 开始,这是第一个带标签浏览的版本,不可能杀死 的实例。 iexplorer.exe 不影响其他标签。单个 iexplorer.exe 实例可以托管多个窗口或选项卡,因此杀死该实例将破坏它托管的所有选项卡或页面。

    因此,让我们假设您想要的标签为 CloseMe恰好是事件选项卡,因此可以通过 taskkill 找到它和 tasklist ,然后 TASKKILL /IM iexplore.exe /FI "WINDOWTITLE eq CloseMe - Internet Explorer"iexplore.exe的主窗口发送终止信号

    在默认配置中,Internet Explorer 总是询问您是要关闭当前选项卡还是关闭所有选项卡,因此用户可以选择仅关闭当前选项卡。但这需要用户的交互,而且可能不是您最初想要的。

    另一种很常见的可能性是 Internet Explorer 配置为始终不询问就关闭所有选项卡。这本质上等同于杀死 Internet Explorer 的所有实例,因此通过 WINDOWTITLE 过滤没有意义。在 taskkill .您可以使用 TASKKILL /IM iexplore.exe具有相同的效果,但成功率为 100%。

    为此,您需要一个实用程序来发送 CLOSE消息到所需的窗口只是关闭特定的窗口而不是整个过程。

    Windows 没有这样做的内置工具,但如果您可以使用第三方工具,那么 NirCmd是你所需要的全部。
    nircmdc.exe win child process "iexplore.exe" child class "Frame Tab" close ititle "CloseMe"
    在带有 Internet Explorer 11 的 Windows 7 x64 上测试

    关于batch-file - 批处理文件 - TASKKILL/FI "WINDOW TITLE ..."不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51253085/

    相关文章:

    windows - 在 Windows 登录窗口之前启动批处理脚本

    batch-file - 如何将值从一个批处理文件返回到调用者批处理文件

    string - 如何使用 FINDSTR 查找变量值中的字符串?

    java - Xslt Saxon 处理器 - 目录中的所有文件

    c# - 在程序内存中执行 BATCH 脚本

    batch-file - 如何修复带有希伯来字体的批处理文件?

    batch-file - 完成后无法批量注销

    windows - 从命令行启用/禁用 Windows 10 中的设备

    batch-file - Windows CMD - 在 for 循环中设置不起作用

    windows - 启动 SQLPLUS,它要求输入密码,执行脚本,获取参数并退出,脚本中不包含 "exit"