【问题标题】:How to finish a .bat file and abend a control-m job if an error was found?如果发现错误,如何完成 .bat 文件并异常终止 control-m 作业?
【发布时间】:2019-04-30 19:09:05
【问题描述】:

我正在尝试通过 control-m 作业在服务器之间自动复制一些文件,如果复制了任何文件,我想终止该作业。

我尝试过使用 GOTO Quit 并退出 /b,但似乎没有用。

robocopy "C:\Temp\enviar" "C:\Temp\enviado"
@ECHO OFF
IF %ERRORLEVEL% EQU 16 ECHO ***FATAL ERROR*** & GOTO QUIT
IF %ERRORLEVEL% EQU 15 ECHO ***UM OU MAIS ARQUIVOS COPIADOS + FALHA NA COPIA DE ALGUM ARQUIVO + ARQUIVOS OU DIRETORIOS INCOMPATIVEIS + EXISTE ARQUIVOS NA PASTA DE DESTINO*** & GOTO QUIT
IF %ERRORLEVEL% EQU 14 ECHO ***FALHA NA COPIA DE ALGUM ARQUIVO + ARQUIVOS OU DIRETORIOS INCOMPATIVEIS + EXISTE ARQUIVOS NA PASTA DE DESTINO*** & GOTO QUIT
IF %ERRORLEVEL% EQU 13 ECHO ***UM OU MAIS ARQUIVOS COPIADOS + FALHA NA COPIA DE ALGUM ARQUIVO + ARQUIVOS OU DIRETORIOS INCOMPATIVEIS*** & GOTO QUIT
IF %ERRORLEVEL% EQU 12 ECHO ***FALHA NA COPIA DE ALGUM ARQUIVO + ARQUIVOS OU DIRETORIOS INCOMPATIVEIS*** & GOTO QUIT
IF %ERRORLEVEL% EQU 11 ECHO ***UM OU MAIS ARQUIVOS COPIADOS + FALHA NA COPIA DE ALGUM ARQUIVO + EXISTE ARQUIVOS NA PASTA DE DESTINO*** & GOTO QUIT
IF %ERRORLEVEL% EQU 10 ECHO ***FALHA NA COPIA DE ALGUM ARQUIVO + EXISTE ARQUIVOS NA PASTA DE DESTINO*** & GOTO QUIT
IF %ERRORLEVEL% EQU 9 ECHO ***UM OU MAIS ARQUIVOS COPIADOS + FALHA NA COPIA DE ALGUM ARQUIVO*** & GOTO QUIT
IF %ERRORLEVEL% EQU 8 ECHO ***FALHA NA COPIA DE ALGUM ARQUIVO*** & GOTO GOTO QUIT
IF %ERRORLEVEL% EQU 7 ECHO ***UM OU MAIS ARQUIVOS COPIADOS + ARQUIVOS OU DIRETORIOS INCOMPATIVEIS + EXISTE ARQUIVOS NA PASTA DE DESTINO*** & GOTO OK
IF %ERRORLEVEL% EQU 6 ECHO ***NENHUM ARQUIVO COPIADO + ARQUIVOS OU DIRETORIOS INCOMPATIVEIS + EXISTE ARQUIVOS NA PASTA DE DESTINO*** & GOTO QUIT
IF %ERRORLEVEL% EQU 5 ECHO ***UM OU MAIS ARQUIVOS COPIADOS + ARQUIVOS OU DIRETORIOS INCOMPATIVEIS + SEM FALHAS*** & GOTO OK
IF %ERRORLEVEL% EQU 4 ECHO ***NENHUM ARQUIVO COPIADO + ARQUIVOS OU DIRETORIOS INCOMPATIVEIS*** & GOTO QUIT
IF %ERRORLEVEL% EQU 3 ECHO ***UM OU MAIS ARQUIVOS COPIADOS + EXISTE ARQUIVOS NA PASTA DE DESTINO*** + SEM FALHAS & GOTO OK
IF %ERRORLEVEL% EQU 2 ECHO ***NENHUM ARQUIVO COPIADO + EXISTE ARQUIVOS NA PASTA DE DESTINO*** & GOTO QUIT
IF %ERRORLEVEL% EQU 1 ECHO ***UM OU MAIS ARQUIVOS COPIADOS SEM FALHAS*** & GOTO OK
IF %ERRORLEVEL% EQU 0 ECHO ***NENHUM ARQUIVO COPIADO*** & GOTO QUIT
:QUIT
exit /b
:OK
@ECHO ON

我希望 control-m 作业在出现错误消息后在进程中间停止运行。

有人可以帮助我吗?

【问题讨论】:

  • 这和powershell有什么关系? [[咧嘴笑]
  • 输入goto /? 并输入quit /?(注意它什么都不做)。
  • @Lee_Dailey 抱歉 :)
  • @DaniloFernandes - 感谢您修复该问题... [grin]

标签: batch-file control-m


【解决方案1】:

为了通知 Control-M 您的批处理文件已异常终止,您需要提供一个代码,而不是零。换行: 退出 /b

例如:

exit /b %ERRORLEVEL%

exit /b 5

在最后一个示例中,Control-M 将通知您您的作业已异常终止并返回代码 5。

我会尝试用这些替换批处理文件中的所有行:

robocopy "C:\Temp\enviar" "C:\Temp\enviado"
exit /b %ERRORLEVEL%

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多