2017-03-03 177 views
1

我一直在尝试使用批处理设置某些内容。我一直试图建立的东西,将打开一个Excel电子表格,其中包含我写完的一些作业,我需要完成。但是,当我尝试检查电子表格是否打开时,我遇到了一个小问题。我试着寻找一些解决方案来解决我的问题,但我从来没有真正理解如何使用它们,或者它们不是针对xlxs制作的。我现在有是这样的代码:如何检查Excel电子表格是否正在运行,在if命令中使用它并运行该工作表(如果它尚未运行)

@echo off 
SET "stime=16:00:00.00" 
SET "etime=24:00:00.00" 
:start 
IF %time% GEQ %stime% (
    IF %time% LEQ %etime% (
     START Homework.xlsx 
     ECHO Hey 
     GOTO start 
    ) 
) ELSE (
    GOTO start 
    ) 
IF %time% LEQ %etime% (
    IF %time% GEQ %stime% (
     START Homework.xlsx 
     ECHO Hey 
     GOTO start 
    ) 
) ELSE (
    GOTO start 
    ) 
+0

您不能在这些变量中使用带有非数字字符的条件运算符。你将不得不寻找另一种方式。 – Compo

+0

不知道你正在试图做的时间比较。批量不知道有关变量类型的任何信息。除非你比较整数,否则一切都是字符串。所以你不能比较日期或时间,除非你把它们转换成它可以比较的整数。如果您试图查看文件是否打开,您可以使用这个。 '2> nul(>> test.xls(call))&&(echo file is not open)|| (回声文件打开)' – Squashman

+0

@Compo,Squashman比较24小时格式的时间是完全有效的,只要您在10时之前引用了字符串就有一个前导空格。比较'LEQ 24:00:00.00'是多余的,因为每个可能的时间会更短(23:59:59.99是在转向“0:00:00.00”之前的最大值) – LotPings

回答

3

的事情是你的代码是循环就像一个叉炸弹,我想你想的,如果一个Excel的实例运行验证,以停止循环。

tasklist /FI "IMAGENAME eq EXCEL.EXE" 2>NUL | find /I /N "EXCEL.EXE">NUL 
if "%ERRORLEVEL%"=="0" //commands here 

它会检查是否有任何excel文件在预览窗格中打开,运行甚至预览。

+0

不。这只会检查Excel是否正在运行。它不检查Excel是否打开文件。 – Squashman

相关问题