我有一个映射网络驱动器的.bat文件,运行MS Access程序然后删除映射的驱动器并退出。当我通过Control-M运行它时,.bat运行并完成但是Control-M中的作业永远不会结束。我已经尝试了多个东西来结束文件以向Control-M发送退出代码,但似乎没有任何工作。以下是代码:
@echo off
net use w: [path]
"C:\Program Files\Microsoft Office\OFFICE11\MSACCESS.EXE" "Y:\MSAccess.mdb"
net use w: /delete
在此代码之后,我尝试了以下命令:
exit
_exit 0
timeout /T 10
无论我尝试什么,Control-M似乎都不知道这项工作已经完成。 Control-M的sysout也没有显示任何退回的退出代码。
答案 0 :(得分:0)
Control-M可能正在等待在其下启动的所有进程在退出作业本身之前退出。在您的情况下,当达到BAT结束时,MSACCESS仍在运行,因此它会阻止Control-M作业完成。
如果您的BAT等待MSACCESS完成,
net use w: [path]
start /b /wait "" "C:\Program Files\Microsoft Office\OFFICE11\MSACCESS.EXE" "Y:\MSAccess.mdb"
net use w: /delete
这可能会缓解(至少是讽刺地)你的问题
答案 1 :(得分:0)
经过一些更多的测试和调查后,问题在.bat中发生了。从未打开和运行MS Access数据库。因此,因为它永远不会启动它永远不会结束或发送错误代码。我正在研究为什么MS Access数据库现在没有运行,这可能会导致另一个问题。
答案 2 :(得分:0)
我有同样的问题。我通过在bat文件末尾添加以下内容解决了我的问题:
exit /b %errorlevel%
答案 3 :(得分:0)
对于Windows批处理清单,在文件末尾添加exit /b %errorlevel%
。这将有助于发现脚本已正确处理,并且控制作业将结束/结束。