关闭特定Excel工作簿时检测到的Bat文件

时间:2018-06-21 06:40:38

标签: windows batch-file command-line cmd

我有这段代码可以检测Excel.exe任务何时终止:

:Excel
tasklist /nh /fi "imagename eq Excel.exe" | find /i "Excel.exe" >nul && (
goto Excel
) || (
goto Continue
)

:Continue

我想修改此代码以使其在我关闭名为

的Excel工作簿时检测到
  

Database.xlsm

这是因为执行批处理时,我需要关闭所有打开的Excel工作簿,以使其进入

  

:继续

我只希望在关闭Database.xlsm文档时继续。

希望您能帮助我。谢谢!

2 个答案:

答案 0 :(得分:1)

您可以尝试以下代码,使用findstr来过滤进程的窗口标题:

:Excel
timeout 1 /NOBREAK
tasklist /V /FI "IMAGENAME eq excel.exe" /FO LIST | findstr /RIXC:"Window Title: *Microsoft Excel - Database.xlsm" > nul && (
    goto :Excel
) || (
    goto :Continue
)
:Continue

您可能需要使部分字符串Microsoft Excel - Database.xlsm适应实际的Excel窗口标题。

我在第timeout 1 /NOBREAK行之后插入了:Excel,以避免CPU负担过重。

答案 1 :(得分:0)

尝试使用windowtitle过滤器进行实验。

首先使用/V标志查看窗口标题。然后尝试对其进行过滤

tasklist /v /FI "imagename eq Excel.exe" /FI "windowtitle eq Microsoft Excel - Database.xlsm" 

根据确切的excel和Windows版本,它可能/可能不起作用

或者您以后可以使用find

进行过滤