2017-03-03 66 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

相關問題