我最近开始遇到一系列.bat文件的问题,我计划通过Windows 10中的"任务计划程序" 打开这些文件。这些任务和批处理文件完美运行超过一年,现在他们给了我适合。
以下是我在记事本中创建的批处理文件中的代码,并保存为.bat
文件。
@echo
cd C:\Users\JonC\Desktop\Macros\IorpiaSCHProgram
IorpiaSCHSet1.xlsm
cd C:\Users\JonC\Desktop\Macros\IorpiaSCHProgram
IorpiaSCHSet2.xlsm
cd C:\Users\JonC\Desktop\Macros\IorpiaSCHProgram
IorpiaSCHSet3.xlsm
cd C:\Users\JonC\Desktop\Macros\IorpiaSCHProgram
IorpiaSCHSet4.xlsm
cd C:\Users\JonC\Desktop\Macros\IorpiaSCHProgram
IorpiaSCHSet5.xlsm
cd C:\Users\JonC\Desktop\Macros\IorpiaSCHProgram
IorpiaSCHSet6.xlsm
cd C:\Users\JonC\Desktop\Macros\IorpiaSCHProgram
IorpiaSCHSet7.xlsm
cd C:\Users\JonC\Desktop\Macros\IorpiaSCHProgram
IorpiaSCHSet8.xlsm
第一个.xlsm
文件应该打开,一些自动宏将运行,excel将关闭(如宏的VBA中所写)。在excel关闭时,下一个命令应该执行并打开下一个.xlsm
文件。正如我所说,这种情况多年来都很有效。
我现在将获得一个只是坐在那里并且不打开文件的命令(可能是第二个文件,可能是第7个文件)。第一个文件将始终打开,但在此之后它会随机发生,因为文件或命令会卡住并且根本无法打开。
我可以使用一些更好的代码来强制打开文件吗?以管理员身份运行没有帮助。更改所有文件的位置没有帮助。重建文件没有帮助。
我能够安排一个打开这些批处理文件的任务并见证它们100%完成,但它永远不会失败,当我在半夜安排时,我醒来一个不完整的批处理文件,挂在命令上。
我也试过以下命令无济于事......
Start \wait \k "C:\Users\Bob\Desktop\Macros\Myfile.xlsm"
C:\Users\Bob\Desktop\Macros\Myfile.xlsm
非常感谢任何帮助或指导...
答案 0 :(得分:0)
这是一个古老的经典VBScript方法。我选择它,因为我认为你将从Excel VBA开始最短的时间。 创建一个名为something.vbs的文件并将其放入其中:
OpenWorkbook "C:\Users\JonC\Desktop\Macros\IorpiaSCHProgram\IorpiaSCHSet1.xlsm"
OpenWorkbook "C:\Users\JonC\Desktop\Macros\IorpiaSCHProgram\IorpiaSCHSet2.xlsm"
Sub OpenWorkbook(Path)
Dim Excel, wb
Set Excel = CreateObject("Excel.Application")
Excel.Visible = True
Set wb = Excel.Workbooks.Open(Path)
Set Excel = Nothing
Set wb = Nothing
End Sub
在你的bat文件中,将其称为:
cscript something.vbs
答案 1 :(得分:0)
我试图重新创建这个问题,但在我的机器上它完美无缺。
但是,此解决方法可能对您有所帮助:
@ECHO OFF
CD C:\Users\JonC\Desktop\Macros\IorpiaSCHProgram
START /MIN /WAIT CMD /C IorpiaSCHSet1.xlsm
START /MIN /WAIT CMD /C IorpiaSCHSet2.xlsm
START /MIN /WAIT CMD /C IorpiaSCHSet3.xlsm
START /MIN /WAIT CMD /C IorpiaSCHSet4.xlsm
START /MIN /WAIT CMD /C IorpiaSCHSet5.xlsm
START /MIN /WAIT CMD /C IorpiaSCHSet6.xlsm
START /MIN /WAIT CMD /C IorpiaSCHSet7.xlsm
START /MIN /WAIT CMD /C IorpiaSCHSet8.xlsm
我无法确保这会有效,但是当第一个.xlsm
文件始终打开时,新环境可能会对其他.xlsm
文件执行相同的操作。
这是否解决了您的问题,请尝试在虚拟机中重新创建此问题。也许问题与某些更新,另一个程序或Windows中的某些内容有关。
如果它还没有工作,请试一试:
@ECHO OFF
CD C:\Users\JonC\Desktop\Macros\IorpiaSCHProgram
SET n=1
:next_file
IF %n% GTR 8 EXIT
IorpiaSCHSet%n%.xlsm
SET /A "n=%n%+1"
CALL :check_status
GOTO :next_file
:check_status
TASKLIST /FI "IMAGENAME EQ EXCEL.EXE" |FIND ":" > nul
IF ERRORLEVEL 1 TIMEOUT /T 1 /NOBREAK && GOTO check_status
EXIT /B
或者这个:
@ECHO OFF
CD C:\Users\JonC\Desktop\Macros\IorpiaSCHProgram
START /MIN CMD /C IorpiaSCHSet1.xlsm
TIMEOUT /T n /NOBREAK > nul
START /MIN CMD /C IorpiaSCHSet2.xlsm
TIMEOUT /T n /NOBREAK > nul
START /MIN CMD /C IorpiaSCHSet3.xlsm
TIMEOUT /T n /NOBREAK > nul
START /MIN CMD /C IorpiaSCHSet4.xlsm
TIMEOUT /T n /NOBREAK > nul
START /MIN CMD /C IorpiaSCHSet5.xlsm
TIMEOUT /T n /NOBREAK > nul
START /MIN CMD /C IorpiaSCHSet6.xlsm
TIMEOUT /T n /NOBREAK > nul
START /MIN CMD /C IorpiaSCHSet7.xlsm
TIMEOUT /T n /NOBREAK > nul
START /MIN CMD /C IorpiaSCHSet8.xlsm
将n
替换为相应宏所需的时间(以秒为单位)。
如果其中一个解决方案有效,但CMD窗口在最后一个宏完成后仍处于打开状态,请在最后添加TASKKILL /F /IM cmd.exe
。