0

我有一个映射网络驱动器的 .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 也没有显示任何类型的退出代码被发回。

4

4 回答 4

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

这可能会缓解(至少从理论上)你的问题

于 2013-04-04T15:46:48.617 回答
0

经过更多的测试和调查后,该问题在 .bat 中较早发生。MS Access 数据库从未被打开和运行。因此,由于它永远不会开始,它永远不会结束或发送错误代码。我正在研究为什么 MS Access 数据库现在没有运行,这可能会导致另一个问题。

于 2013-04-15T14:54:35.233 回答
0

我有同样的问题。我通过在 bat 文件末尾添加以下内容解决了我的问题:

exit /b %errorlevel%
于 2019-08-21T19:38:03.027 回答
0

对于 Windows 批处理脚本,exit /b %errorlevel%请在文件末尾添加。这将有助于发现脚本已正确处理并且控制作业将结束/endnotok。

于 2019-08-28T12:49:20.933 回答