Windows 检测';s关闭特定Excel工作簿时
我有以下代码,用于检测Excel.exe任务何时终止:Windows 检测';s关闭特定Excel工作簿时,windows,batch-file,command-line,cmd,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 我想修改此代码,使其在关闭名为 Database.xlsm 这是因为我需要关闭我在执行批处理时打开的所有Excel工作簿,以使其进入 :继续 我希望它转到:仅当Data
:Excel
tasklist /nh /fi "imagename eq Excel.exe" | find /i "Excel.exe" >nul && (
goto Excel
) || (
goto Continue
)
:Continue
我想修改此代码,使其在关闭名为
Database.xlsm
这是因为我需要关闭我在执行批处理时打开的所有Excel工作簿,以使其进入
:继续
我希望它转到:仅当Database.xlsm文档关闭时才继续
我希望你能帮助我。谢谢大家! 尝试使用
windowtitle
过滤器进行实验
首先使用/V
标志查看窗口标题。。然后尝试过滤它
即
它可能工作,也可能不工作,具体取决于excel和windows版本
或者,您可以在以后使用
查找进行筛选。您可以尝试使用以下代码筛选流程的窗口标题:
:Excel
超时1/NOBREAK
tasklist/V/FI“IMAGENAME eq excel.exe”/FO LIST | findstr/RIXC:“窗口标题:*Microsoft excel-Database.xlsm”>nul&&(
后藤:Excel
) || (
后藤:继续
)
:继续
您可能需要将部分字符串Microsoft Excel-Database.xlsm
调整为实际的Excel窗口标题
我在第:Excel
行后插入了timeout 1/NOBREAK
,以避免沉重的CPU负载。在我的例子中,确切的标题是“Database.xlsm-Excel”。我尝试了这段代码,但在关闭Database.xlsm后,CMD卡在了这一部分,因此命令一直转到:Excel。还有其他建议吗?谢谢为什么同时使用/R
(regex)和/C
(文字搜索字符串)?我认为它们是相互排斥的/C
确保空格成为搜索字符串的一部分,/R
将整个字符串定义为“正则表达式”(因为/C
始终默认为文字模式);不使用/C
像findstr[/R]“abc def”
实际上定义了两个搜索字符串abc
和def
;还可以查看。。。
tasklist /v /FI "imagename eq Excel.exe" /FI "windowtitle eq Microsoft Excel - Database.xlsm"