【问题标题】:Control-M job not ending after .bat finishes.bat 完成后 Control-M 作业未结束
【发布时间】:2013-04-04 13:48:08
【问题描述】:

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

【问题讨论】:

    标签: ms-access batch-file mapped-drive control-m


    【解决方案1】:

    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
    

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

    【讨论】:

    • 那行不通。似乎问题在于通过 Control-M 运行 .bat 时 Access 数据库未运行。我可以作为在 Contorl-M 中设置的所有者登录服务器,它运行良好,但由于某种原因,当 Control-M 执行此操作时它没有运行。我不是 Control-M 专家,所以不知道 Contorl-M 以某人身份运行工作与实际以他们自己身份运行该工作之间的区别。想法?
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      exit /b %errorlevel%
      

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-02-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-10-03
          • 1970-01-01
          相关资源
          最近更新 更多