如何使batch file等待Excelmacros来完成
我search了一个解决scheme的高和低,但一直没能find一个。
我有一个batch file,我调用一个JavaScript文件,调用一个Excelmacros来运行。 我希望batch file等待macros完成,然后继续。
我使用JavaScript文件来调用Excelmacros,因为我不知道直接从batch file运行macros的方法。 可能有更好的方法,但我一直没能find一个。
在我的.bat文件中,我试过了:
Do some batch stuff, including iMacros WAIT/ cscript.exe RunExcelJScript.js Do some more batch stuff with iMacros
但它不会等待macros完成之前继续做更多的批次的东西。 我假设这是因为.bat文件实际上只是等待.js文件完成,而不是随后由.js文件打开的Excelmacros。
我知道我可以用超时设定一段等待时间,但是这个macros很复杂,需要花很长时间来运行。
我需要一个方法来:
-
调用Excelmacros直接从.bat文件运行,所以我可以使用/ WAIT
-
告诉JavaScript文件等到macros完成,然后创build一个标志,这会触发.bat文件继续。
.bat / .js / Macro将每15分钟运行一次。
我的.js文件是这样的:
var objXL = WScript.CreateObject("Excel.Application"); objXL.Visible = true; objXL.WorkBooks.Open("FilePathTo/Enrollments.xlsm"); objXL.Run("NameOfExcelModule.UpdateAndExportToMoodle");
任何人都可以提供一个build议,如何使.bat文件等待我的Excelmacros完成?
你可以尝试这样的,只要find的imacro任务的名称。 当任务运行时,任务完成时,%ERRORLEVEL%将变为“0”,%ERRORLEVEL%变为“1”,循环结束。
:loop for /f "tokens=2 delims=: " %%a in ('tasklist ^| find "TaskName.exe"' ) do ( if "%ERRORLEVEL%"=="0" ( ping -n 10 localhost > nul 2>nul goto loop ) )