Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 检测';s关闭特定Excel工作簿时_Windows_Batch File_Command Line_Cmd - Fatal编程技术网

Windows 检测';s关闭特定Excel工作簿时

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.exe任务何时终止:

: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"