Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 为什么调用批处理文件后的错误处理在我的批处理文件中无法正常工作?_Batch File - Fatal编程技术网

Batch file 为什么调用批处理文件后的错误处理在我的批处理文件中无法正常工作?

Batch file 为什么调用批处理文件后的错误处理在我的批处理文件中无法正常工作?,batch-file,Batch File,我正在尝试从批处理文件Run\u process.bat中调用Run\u sqlldr\u process.bat 这是在run\u进程中调用调用的方式。bat: call %FWK_DIR%\run_sqlldr_process.bat !ldr!.ctl !log!.log !bad!.bad !data!.dat %BATCHUSER% %BATCHPWD% %ORACLE_SID% echo %ERRORLEVEL% echo %RC% @echo off SETLOCAL ENABL

我正在尝试从批处理文件
Run\u process.bat
中调用
Run\u sqlldr\u process.bat

这是在
run\u进程中调用调用的方式。bat

call %FWK_DIR%\run_sqlldr_process.bat !ldr!.ctl !log!.log !bad!.bad !data!.dat %BATCHUSER% %BATCHPWD% %ORACLE_SID%
echo %ERRORLEVEL%
echo %RC%
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION

REM ##########################################################################
REM # Program Name: run_process.bat
REM # Description:
REM #   This script is a part of the batch framework. It contains the common
REM #   functions for running batch jobs.
REM #
REM # Usage:
REM #   run_process.bat <processname>
REM #
REM # History:
REM # Date        Who                 Description
REM # ----------  ------------------  ----------------------------------------
REM # 01-Jun-2014  Ilavarasan Sekar      Created
REM ##########################################################################

SET NLS_DATE_FORMAT=RRRR-MM-DD-HH24:MI

FOR /F "TOKENS=1* DELIMS= " %%A IN ('DATE/T') DO SET CDATE=%%B
FOR /F "TOKENS=1,2 eol=/ DELIMS=/ " %%A IN ('DATE/T') DO SET mm=%%B
FOR /F "TOKENS=1,2 DELIMS=/ eol=/" %%A IN ('echo %CDATE%') DO SET dd=%%B
FOR /F "TOKENS=2,3 DELIMS=/ " %%A IN ('echo %CDATE%') DO SET yyyy=%%B
SET todaysdate=%yyyy%%mm%%dd%
SET WORKFLOWLOGMONTH=%mm%%yyyy%
SET DATETIMESTAMP=%todaysdate%
for /f "tokens=1-3 delims=:." %%a in ("%time%") do SET timestamp=%%a%%b%%c
for /f "tokens=1-3 delims= " %%a in ("%timestamp%") do SET trimmed_timestamp=%%a%%b%%c
SET TIMESTAMP=%DATETIMESTAMP%_%trimmed_timestamp%


rem --- Initialize --------------------------------------------
rem Install error handler.
rem basename=$(basename $0)
SET dirname=D:/JDA/Batch_FWK/fwk
echo off
SET oldpwd=%~dp0
SET suffix=%date%

SET process_id=%1
SET job_id=
SET process_type=
SET preprocess_type=
SET postprocess_type=
SET job_status=CREATED
SET job_status_message=
SET log_level=INFO
SET pre=

if "%1" == "" goto show_usage

rem --- Include environment variables -------------------------
SET batchenv=%dirname%\batchenv.bat
if exist %batchenv% (

    call %batchenv%

 ) else (
  echo "Environment file missing.\n"
  goto end
)

set LOG_FILE=%LOG_DIR%\%process_id%_%TIMESTAMP%.log
set TMP_FILE=%TMP_DIR%\%process_id%_%TIMESTAMP%.tmp


rem --- Start job ---------------------------------------------

call:start_job

IF "%preprocess_type%"=="SQL" (

  call:log_info "SQL."
  SET pre=%SQL_DIR%\%process_id%_pre
  call %FWK_DIR%\run_sql_process.bat !pre!.sql

) ELSE IF "%preprocess_type%"=="CMD" (

   call:log_info "CMD."
   SET pre=%CMD_DIR%\%process_id%_pre
   call %FWK_DIR%\run_cmd_process.bat !pre!.bat 

) ELSE (
  call:log_info "No postprocess_type."

)

IF %ERRORLEVEL% GTR 0 (
    set job_status=FAILED
    call:end_job
    call:cleanup
    set RC=1
    goto end 

 )


rem --- Execute main process ----------------------------------

IF "%process_type%"=="SQL" (

   call:log_info "SQL."

   SET main=%SQL_DIR%\%process_id%
   call %FWK_DIR%\run_sql_process.bat !main!.sql

) ELSE IF "%process_type%"=="CMD" (

  call:log_info "CMD."
  SET main=%CMD_DIR%\%process_id%
  call %FWK_DIR%\run_cmd_process.bat !main!.bat

) ELSE IF "%process_type%"=="SRE" (

  call:log_info "SRE."
  SET main=%XML_DIR%\%process_id%
  call %FWK_DIR%\run_sre_process.bat !main!.xml

) ELSE IF "%process_type%"=="PERL" (

  call:log_info "PERL."
  SET main=%PRL_DIR%\%process_id%
  call %FWK_DIR%\run_perl_process.bat !main!.pl

) ELSE IF "%process_type%"=="SQLLDR" (

  call:log_info "SQLLDR."
  SET ldr=%CTL_DIR%\%process_id%
  SET log=%LOG_DIR%\%process_id%_%TIMESTAMP%
  SET bad=%BAD_DIR%\%process_id%_%TIMESTAMP%
  SET data=%IN_DIR%\%process_id%
  call %FWK_DIR%\run_sqlldr_process.bat !ldr!.ctl !log!.log !bad!.bad !data!.dat %BATCHUSER% %BATCHPWD% %ORACLE_SID%
  echo Return Code ERRORLEVEL inside run_process is %ERRORLEVEL%
  echo Return Code inside run_process.bat  is %RC%


IF %RC% GTR 0 (
    ECHO INSIDE FAILED BLOCK
    set job_status=FAILED
    set RC=1
    call:end_job
    call:cleanup
    goto end 
 )

) ELSE (
  call:log_info "Unsupported process type %process_type%."
    set job_status=FAILED
    set RC=1
    call:end_job
    call:cleanup
    goto end
)

IF %ERRORLEVEL% GTR 0 (
    set job_status=FAILED
    set RC=1
    call:end_job
    call:cleanup
    goto end 
 )


IF "%postprocess_type%"=="SQL" (

    call:log_info "SQL."
    SET post=%SQL_DIR%\%process_id%_post
    call %FWK_DIR%\run_sql_process.bat !post!.sql
) ELSE IF "%postprocess_type%"=="CMD" (

  call:log_info "CMD."
   SET post=%CMD_DIR%\%process_id%_post
   call %FWK_DIR%\run_cmd_process.bat !post!.bat    

) ELSE (

  call:log_info "No postprocess_type."
)

IF %ERRORLEVEL% GTR 0 (
    set job_status=FAILED
    set RC=1
    call:end_job
    call:cleanup
    goto end 
 )


rem --- End job -------------------------------------------------

call:end_job
call:cleanup
goto end 


:show_usage

@echo Usage: Usage is run_process.bat ProcessName

goto end

rem --- Function definitions ----------------------------------
rem -----------------------------------------------------------
rem Function Name: start_job
rem Description  :
rem   Retrieve process properties and start a new job for
rem   the specified process.
rem Input        : process_id - Process to start.
rem Output       : job_id - New job id set.
rem -----------------------------------------------------------

:start_job
  call:log_info "--- Starting -----------------------------------"
  call:log_info "Process          : %process_id%"
  call:log_info "Environment      : %ENV_NAME%"
  call:log_info "Batch root       : %ENV_HOME%"
  call:log_info "Log file         : %LOG_FILE%"
  call:log_info "Tmp file         : %TMP_FILE%"

  sqlplus -s /nolog @%dirname%/sqlFile.sql '%BATCHUSER%' '%BATCHPWD%' '%ORACLE_SID%' '%process_id%'

  for /f "tokens=2 delims=|" %%a in ('findstr /R /I "^JOB_ID" %tmp_file%') do set JOB_ID=%%a
  for /f "tokens=1,*" %%a in ("%JOB_ID%") do set JOB_ID=%%a
  for /f "tokens=2 delims=|" %%a in ('findstr /R /I "^PROCESS_TYPE" %tmp_file%') do set PROCESS_TYPE=%%a
  for /f "tokens=1,*" %%a in ("%PROCESS_TYPE%") do set PROCESS_TYPE=%%a
  for /f "tokens=2 delims=|" %%a in ('findstr /R /I "^PREPROCESS_TYPE" %tmp_file%') do set PREPROCESS_TYPE=%%a
  for /f "tokens=1,*" %%a in ("%PREPROCESS_TYPE%") do set PREPROCESS_TYPE=%%a
  for /f "tokens=2 delims=|" %%a in ('findstr /R /I "^POSTPROCESS_TYPE" %tmp_file%') do set POSTPROCESS_TYPE=%%a
  for /f "tokens=1,*" %%a in ("%POSTPROCESS_TYPE%") do set POSTPROCESS_TYPE=%%a
  for /f "tokens=2 delims=|" %%a in ('findstr /R /I "^LOG_LEVEL" %tmp_file%') do set LOG_LEVEL=%%a
  for /f "tokens=1,*" %%a in ("%LOG_LEVEL%") do set LOG_LEVEL=%%a

  set job_status=RUNNING
  del /q %TMP_FILE% 

  IF "%job_id%" == ""  (
    set job_status=FAILED
    call:cleanup
    set RC=1
    goto end 
 )

  call:log_info "Job id           : %job_id%"
  call:log_info "Process type     : %process_type%"
  call:log_info "Pre-process type : %preprocess_type%"
  call:log_info "Post-process type: %postprocess_type%"
  call:log_info "--- Running ------------------------------------"  
 goto:eof

rem -----------------------------------------------------------
rem Function Name: end_job
rem Description  :
rem   End the current job.
rem Input        : job_id
rem Output       : N/A
rem -----------------------------------------------------------
:end_job

  call:log_info "--- Ending -------------------------------------"


 sqlplus -s /nolog @%dirname%/sqlFileEnd.sql '%BATCHUSER%' '%BATCHPWD%' '%ORACLE_SID%' '%job_id%' '%job_status%'

  for /f "tokens=2 delims=|" %%a in ('findstr /R /I "^JOB_STATUS|" %tmp_file%') do set JOB_STATUS=%%a
  for /f "tokens=1,*" %%a in ("%JOB_STATUS%") do set JOB_STATUS=%%a
  for /f "tokens=2 delims=|" %%a in ('findstr /R /I "^JOB_STATUS_MESSAGE" %tmp_file%') do set JOB_STATUS_MESSAGE=%%a
  for /f "tokens=1,*" %%a in ("%JOB_STATUS_MESSAGE%") do set JOB_STATUS_MESSAGE=%%a
  for /f "tokens=2 delims=|" %%a in ('findstr /R /I "^JOB_VOLUME" %tmp_file%') do set JOB_VOLUME=%%a
  for /f "tokens=1,*" %%a in ("%JOB_VOLUME%") do set JOB_VOLUME=%%a
  for /f "tokens=2 delims=|" %%a in ('findstr /R /I "^JOB_ERROR_COUNT" %tmp_file%') do set JOB_ERROR_COUNT=%%a
  for /f "tokens=1,*" %%a in ("%JOB_ERROR_COUNT%") do set JOB_ERROR_COUNT=%%a
  for /f "tokens=2 delims=|" %%a in ('findstr /R /I "^JOB_WARNING_COUNT" %tmp_file%') do set JOB_WARNING_COUNT=%%a
  for /f "tokens=1,*" %%a in ("%JOB_WARNING_COUNT%") do set JOB_WARNING_COUNT=%%a

   del /q %TMP_FILE% 
  call:log_info "Job status       : %job_status%"
  call:log_info "Job status msg   : %job_status_message%"
  rem call:log_info "Volume           : %job_volume%"
  call:log_info "Error count      : %job_error_count%"
  call:log_info "Warning count    : %job_warning_count%"    


goto:eof

rem -----------------------------------------------------------
rem Function Name: fatal
rem Description  :
rem   Error handler called called by trap on error etc.
rem   Handle clean up and exit with error.
rem Input        : Return code from failed command in ?.
rem Output       : N/A
rem -----------------------------------------------------------



rem -----------------------------------------------------------
rem Function Name: clear
rem Description  :
rem   Handle clean up.
rem Input        : N/A
rem Output       : N/A
rem -----------------------------------------------------------
:cleanup 

 if not '%job_status%' == 'COMPLETED' (
 call:log_info "--------- Ended with failure -------------------------"
 ) else (
 call:log_info "----------------------- End --------------------------"
 )
goto:eof


rem -----------------------------------------------------------
rem Function Name: log_info
rem Description  :
rem   Write information to log file and stdout.
rem Input        : 1 - Message to log.
rem Output       : N/A
rem -----------------------------------------------------------
:log_info

  set stamp=%TIMESTAMP%
  rem echo [INFO.][%stamp%] %1
  rem echo.
  rem echo %LOG_FILE%
  echo [INFO.][%stamp%] %1 >> %LOG_FILE%
  echo. >> %LOG_FILE%

goto:eof

:end
exit /b %RC%
endlocal
run\u sqlldr\u进程.bat内部出现故障,之后
run\u sqlldr\u进程.bat
退出,返回代码
1
分配给环境变量
RC
。但是
run\u process.bat
不会从
run\u sqlldr\u process.bat
捕获错误返回代码。
echo
语句输出
0
run\u进程。bat
成功完成

文件
运行\u sqlldr\u进程.bat

call %FWK_DIR%\run_sqlldr_process.bat !ldr!.ctl !log!.log !bad!.bad !data!.dat %BATCHUSER% %BATCHPWD% %ORACLE_SID%
echo %ERRORLEVEL%
echo %RC%
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION

REM ##########################################################################
REM # Program Name: run_process.bat
REM # Description:
REM #   This script is a part of the batch framework. It contains the common
REM #   functions for running batch jobs.
REM #
REM # Usage:
REM #   run_process.bat <processname>
REM #
REM # History:
REM # Date        Who                 Description
REM # ----------  ------------------  ----------------------------------------
REM # 01-Jun-2014  Ilavarasan Sekar      Created
REM ##########################################################################

SET NLS_DATE_FORMAT=RRRR-MM-DD-HH24:MI

FOR /F "TOKENS=1* DELIMS= " %%A IN ('DATE/T') DO SET CDATE=%%B
FOR /F "TOKENS=1,2 eol=/ DELIMS=/ " %%A IN ('DATE/T') DO SET mm=%%B
FOR /F "TOKENS=1,2 DELIMS=/ eol=/" %%A IN ('echo %CDATE%') DO SET dd=%%B
FOR /F "TOKENS=2,3 DELIMS=/ " %%A IN ('echo %CDATE%') DO SET yyyy=%%B
SET todaysdate=%yyyy%%mm%%dd%
SET WORKFLOWLOGMONTH=%mm%%yyyy%
SET DATETIMESTAMP=%todaysdate%
for /f "tokens=1-3 delims=:." %%a in ("%time%") do SET timestamp=%%a%%b%%c
for /f "tokens=1-3 delims= " %%a in ("%timestamp%") do SET trimmed_timestamp=%%a%%b%%c
SET TIMESTAMP=%DATETIMESTAMP%_%trimmed_timestamp%


rem --- Initialize --------------------------------------------
rem Install error handler.
rem basename=$(basename $0)
SET dirname=D:/JDA/Batch_FWK/fwk
echo off
SET oldpwd=%~dp0
SET suffix=%date%

SET process_id=%1
SET job_id=
SET process_type=
SET preprocess_type=
SET postprocess_type=
SET job_status=CREATED
SET job_status_message=
SET log_level=INFO
SET pre=

if "%1" == "" goto show_usage

rem --- Include environment variables -------------------------
SET batchenv=%dirname%\batchenv.bat
if exist %batchenv% (

    call %batchenv%

 ) else (
  echo "Environment file missing.\n"
  goto end
)

set LOG_FILE=%LOG_DIR%\%process_id%_%TIMESTAMP%.log
set TMP_FILE=%TMP_DIR%\%process_id%_%TIMESTAMP%.tmp


rem --- Start job ---------------------------------------------

call:start_job

IF "%preprocess_type%"=="SQL" (

  call:log_info "SQL."
  SET pre=%SQL_DIR%\%process_id%_pre
  call %FWK_DIR%\run_sql_process.bat !pre!.sql

) ELSE IF "%preprocess_type%"=="CMD" (

   call:log_info "CMD."
   SET pre=%CMD_DIR%\%process_id%_pre
   call %FWK_DIR%\run_cmd_process.bat !pre!.bat 

) ELSE (
  call:log_info "No postprocess_type."

)

IF %ERRORLEVEL% GTR 0 (
    set job_status=FAILED
    call:end_job
    call:cleanup
    set RC=1
    goto end 

 )


rem --- Execute main process ----------------------------------

IF "%process_type%"=="SQL" (

   call:log_info "SQL."

   SET main=%SQL_DIR%\%process_id%
   call %FWK_DIR%\run_sql_process.bat !main!.sql

) ELSE IF "%process_type%"=="CMD" (

  call:log_info "CMD."
  SET main=%CMD_DIR%\%process_id%
  call %FWK_DIR%\run_cmd_process.bat !main!.bat

) ELSE IF "%process_type%"=="SRE" (

  call:log_info "SRE."
  SET main=%XML_DIR%\%process_id%
  call %FWK_DIR%\run_sre_process.bat !main!.xml

) ELSE IF "%process_type%"=="PERL" (

  call:log_info "PERL."
  SET main=%PRL_DIR%\%process_id%
  call %FWK_DIR%\run_perl_process.bat !main!.pl

) ELSE IF "%process_type%"=="SQLLDR" (

  call:log_info "SQLLDR."
  SET ldr=%CTL_DIR%\%process_id%
  SET log=%LOG_DIR%\%process_id%_%TIMESTAMP%
  SET bad=%BAD_DIR%\%process_id%_%TIMESTAMP%
  SET data=%IN_DIR%\%process_id%
  call %FWK_DIR%\run_sqlldr_process.bat !ldr!.ctl !log!.log !bad!.bad !data!.dat %BATCHUSER% %BATCHPWD% %ORACLE_SID%
  echo Return Code ERRORLEVEL inside run_process is %ERRORLEVEL%
  echo Return Code inside run_process.bat  is %RC%


IF %RC% GTR 0 (
    ECHO INSIDE FAILED BLOCK
    set job_status=FAILED
    set RC=1
    call:end_job
    call:cleanup
    goto end 
 )

) ELSE (
  call:log_info "Unsupported process type %process_type%."
    set job_status=FAILED
    set RC=1
    call:end_job
    call:cleanup
    goto end
)

IF %ERRORLEVEL% GTR 0 (
    set job_status=FAILED
    set RC=1
    call:end_job
    call:cleanup
    goto end 
 )


IF "%postprocess_type%"=="SQL" (

    call:log_info "SQL."
    SET post=%SQL_DIR%\%process_id%_post
    call %FWK_DIR%\run_sql_process.bat !post!.sql
) ELSE IF "%postprocess_type%"=="CMD" (

  call:log_info "CMD."
   SET post=%CMD_DIR%\%process_id%_post
   call %FWK_DIR%\run_cmd_process.bat !post!.bat    

) ELSE (

  call:log_info "No postprocess_type."
)

IF %ERRORLEVEL% GTR 0 (
    set job_status=FAILED
    set RC=1
    call:end_job
    call:cleanup
    goto end 
 )


rem --- End job -------------------------------------------------

call:end_job
call:cleanup
goto end 


:show_usage

@echo Usage: Usage is run_process.bat ProcessName

goto end

rem --- Function definitions ----------------------------------
rem -----------------------------------------------------------
rem Function Name: start_job
rem Description  :
rem   Retrieve process properties and start a new job for
rem   the specified process.
rem Input        : process_id - Process to start.
rem Output       : job_id - New job id set.
rem -----------------------------------------------------------

:start_job
  call:log_info "--- Starting -----------------------------------"
  call:log_info "Process          : %process_id%"
  call:log_info "Environment      : %ENV_NAME%"
  call:log_info "Batch root       : %ENV_HOME%"
  call:log_info "Log file         : %LOG_FILE%"
  call:log_info "Tmp file         : %TMP_FILE%"

  sqlplus -s /nolog @%dirname%/sqlFile.sql '%BATCHUSER%' '%BATCHPWD%' '%ORACLE_SID%' '%process_id%'

  for /f "tokens=2 delims=|" %%a in ('findstr /R /I "^JOB_ID" %tmp_file%') do set JOB_ID=%%a
  for /f "tokens=1,*" %%a in ("%JOB_ID%") do set JOB_ID=%%a
  for /f "tokens=2 delims=|" %%a in ('findstr /R /I "^PROCESS_TYPE" %tmp_file%') do set PROCESS_TYPE=%%a
  for /f "tokens=1,*" %%a in ("%PROCESS_TYPE%") do set PROCESS_TYPE=%%a
  for /f "tokens=2 delims=|" %%a in ('findstr /R /I "^PREPROCESS_TYPE" %tmp_file%') do set PREPROCESS_TYPE=%%a
  for /f "tokens=1,*" %%a in ("%PREPROCESS_TYPE%") do set PREPROCESS_TYPE=%%a
  for /f "tokens=2 delims=|" %%a in ('findstr /R /I "^POSTPROCESS_TYPE" %tmp_file%') do set POSTPROCESS_TYPE=%%a
  for /f "tokens=1,*" %%a in ("%POSTPROCESS_TYPE%") do set POSTPROCESS_TYPE=%%a
  for /f "tokens=2 delims=|" %%a in ('findstr /R /I "^LOG_LEVEL" %tmp_file%') do set LOG_LEVEL=%%a
  for /f "tokens=1,*" %%a in ("%LOG_LEVEL%") do set LOG_LEVEL=%%a

  set job_status=RUNNING
  del /q %TMP_FILE% 

  IF "%job_id%" == ""  (
    set job_status=FAILED
    call:cleanup
    set RC=1
    goto end 
 )

  call:log_info "Job id           : %job_id%"
  call:log_info "Process type     : %process_type%"
  call:log_info "Pre-process type : %preprocess_type%"
  call:log_info "Post-process type: %postprocess_type%"
  call:log_info "--- Running ------------------------------------"  
 goto:eof

rem -----------------------------------------------------------
rem Function Name: end_job
rem Description  :
rem   End the current job.
rem Input        : job_id
rem Output       : N/A
rem -----------------------------------------------------------
:end_job

  call:log_info "--- Ending -------------------------------------"


 sqlplus -s /nolog @%dirname%/sqlFileEnd.sql '%BATCHUSER%' '%BATCHPWD%' '%ORACLE_SID%' '%job_id%' '%job_status%'

  for /f "tokens=2 delims=|" %%a in ('findstr /R /I "^JOB_STATUS|" %tmp_file%') do set JOB_STATUS=%%a
  for /f "tokens=1,*" %%a in ("%JOB_STATUS%") do set JOB_STATUS=%%a
  for /f "tokens=2 delims=|" %%a in ('findstr /R /I "^JOB_STATUS_MESSAGE" %tmp_file%') do set JOB_STATUS_MESSAGE=%%a
  for /f "tokens=1,*" %%a in ("%JOB_STATUS_MESSAGE%") do set JOB_STATUS_MESSAGE=%%a
  for /f "tokens=2 delims=|" %%a in ('findstr /R /I "^JOB_VOLUME" %tmp_file%') do set JOB_VOLUME=%%a
  for /f "tokens=1,*" %%a in ("%JOB_VOLUME%") do set JOB_VOLUME=%%a
  for /f "tokens=2 delims=|" %%a in ('findstr /R /I "^JOB_ERROR_COUNT" %tmp_file%') do set JOB_ERROR_COUNT=%%a
  for /f "tokens=1,*" %%a in ("%JOB_ERROR_COUNT%") do set JOB_ERROR_COUNT=%%a
  for /f "tokens=2 delims=|" %%a in ('findstr /R /I "^JOB_WARNING_COUNT" %tmp_file%') do set JOB_WARNING_COUNT=%%a
  for /f "tokens=1,*" %%a in ("%JOB_WARNING_COUNT%") do set JOB_WARNING_COUNT=%%a

   del /q %TMP_FILE% 
  call:log_info "Job status       : %job_status%"
  call:log_info "Job status msg   : %job_status_message%"
  rem call:log_info "Volume           : %job_volume%"
  call:log_info "Error count      : %job_error_count%"
  call:log_info "Warning count    : %job_warning_count%"    


goto:eof

rem -----------------------------------------------------------
rem Function Name: fatal
rem Description  :
rem   Error handler called called by trap on error etc.
rem   Handle clean up and exit with error.
rem Input        : Return code from failed command in ?.
rem Output       : N/A
rem -----------------------------------------------------------



rem -----------------------------------------------------------
rem Function Name: clear
rem Description  :
rem   Handle clean up.
rem Input        : N/A
rem Output       : N/A
rem -----------------------------------------------------------
:cleanup 

 if not '%job_status%' == 'COMPLETED' (
 call:log_info "--------- Ended with failure -------------------------"
 ) else (
 call:log_info "----------------------- End --------------------------"
 )
goto:eof


rem -----------------------------------------------------------
rem Function Name: log_info
rem Description  :
rem   Write information to log file and stdout.
rem Input        : 1 - Message to log.
rem Output       : N/A
rem -----------------------------------------------------------
:log_info

  set stamp=%TIMESTAMP%
  rem echo [INFO.][%stamp%] %1
  rem echo.
  rem echo %LOG_FILE%
  echo [INFO.][%stamp%] %1 >> %LOG_FILE%
  echo. >> %LOG_FILE%

goto:eof

:end
exit /b %RC%
endlocal
@echo关闭
SETLOCAL ENABLEDELAYEDEXPANSION
雷姆##########################################################################
REM#程序名称:run_process.bat
REM描述:
REM#此脚本是批处理框架的一部分。它包含了常见的
REM#用于运行批处理作业的函数。
雷姆#
REM#用法:
REM#run#U process.bat
雷姆#
REM#历史记录:
REM#日期世卫组织描述
雷姆----------------------------------------------------------
REM#01-Jun-2014 Ilavarasan Sekar创建
雷姆##########################################################################
设置NLS_日期_格式=RRRR-MM-DD-HH24:MI
对于/F“TOKENS=1*DELIMS=“%%A IN('DATE/T')DO SET CDATE=%%B
对于('DATE/T')中的/F“TOKENS=1,2 eol=/DELIMS=/”%%A,DO SET mm=%%B
对于('echo%CDATE%')中的/F“TOKENS=1,2 DELIMS=/eol=/”%%A,请设置dd=%%B
对于('echo%CDATE%')中的/F“TOKENS=2,3 DELIMS=/”%%A,请设置yyyy=%%B
设置为今日日期=%yyy%%mm%%dd%
设置WORKFLOWLOGMONTH=%mm%%yyyy%
设置日期时间戳=%todaysdate%
对于/f“令牌=1-3 delims=:。”(“%time%”)中的%%a请设置时间戳=%%a%%b%%c
对于/f“tokens=1-3 delims=“%%a in”(“%timestamp%”)请设置修剪的时间戳=%%a%%b%%c
设置时间戳=%DATETIMESTAMP%\u%trimmed\uTimestamp%
rem--初始化--------------------------------------------
rem安装错误处理程序。
rem basename=$(basename$0)
设置dirname=D:/JDA/Batch_FWK/FWK
回音
设置oldpwd=%~dp0
设置后缀=%date%
设置进程id=%1
设置作业id=
设置进程类型=
设置预处理类型=
设置后处理类型=
设置作业状态=已创建
设置作业\u状态\u消息=
设置日志级别=信息
预先设定=
如果“%1”==“转到显示使用情况”
rem--包括环境变量-------------------------
设置batchenv=%dirname%\batchenv.bat
如果存在%batchenv%(
调用%batchenv%
)否则(
echo“缺少环境文件。\n”
转到终点
)
设置日志文件=%LOG\u DIR%\%process\u id%\%TIMESTAMP%.LOG
设置TMP\u文件=%TMP\u DIR%\%process\u id%\%TIMESTAMP%.TMP
启动作业---------------------------------------------
电话:开始工作
如果“%preprocess\u type%”=SQL(
调用:日志信息“SQL”
SET pre=%SQL\u DIR%\%process\u id%\u pre
调用%FWK\u DIR%\run\u sql\u process.bat!pre!.sql
)否则,如果“%preprocess\u type%”==“CMD”(
调用:log_info“CMD”
设置pre=%CMD\u DIR%\%process\u id%\u pre
调用%FWK\u DIR%\run\u cmd\u process.bat!pre!.bat
)否则(
调用:log\u info“无后处理类型”
)
如果%ERRORLEVEL%GTR 0(
设置作业状态=失败
电话:结束工作
电话:清理
设置RC=1
转到终点
)
rem--执行主进程----------------------------------
如果“%process\u type%”=SQL(
调用:日志信息“SQL”
设置main=%SQL\u DIR%\%process\u id%
调用%FWK\u DIR%\run\u sql\u process.bat!main!.sql
)否则,如果“%process\u type%”==“CMD”(
调用:log_info“CMD”
设置main=%CMD\u DIR%\%process\u id%
调用%FWK\u DIR%\run\u cmd\u process.bat!main!.bat
)如果“%process\u type%”为“SRE”,则为ELSE(
呼叫:日志信息“SRE”
设置main=%XML\u DIR%\%process\u id%
调用%FWK\u DIR%\run\u sre\u process.bat!main!.xml
)如果“%process\u type%”为PERL,则为ELSE(
调用:log_info“PERL”
设置main=%PRL\u DIR%\%process\u id%
调用%FWK\u DIR%\run\u perl\u process.bat!main!.pl
)否则,如果“%process\u type%”==“SQLLDR”(
调用:日志信息“SQLLDR”
设置ldr=%CTL\u DIR%\%process\u id%
设置日志=%log\u DIR%\%process\u id%\u%TIMESTAMP%
设置错误=%bad\u DIR%\%process\u id%\u%TIMESTAMP%
设置数据=%IN\u DIR%\%process\u id%
调用%FWK\u DIR%\run\u sqlldr\u process.bat!ldr!.ctl!log!.log!bad!.bad!data!.dat%BATCHUSER%%BATCHPWD%%ORACLE\u SID%
运行_进程内的回显返回代码ERRORLEVEL为%ERRORLEVEL%
run_process.bat内的回显返回代码为%RC%
如果%RC%GTR为0(
故障块内的回波
设置作业状态=失败
设置RC=1
电话:结束工作
电话:清理
转到终点
)
)否则(
调用:日志信息“不支持的进程类型%process\u type%”
设置作业状态=失败
设置RC=1
电话:结束工作
电话:清理
转到终点
)
如果%ERRORLEVEL%GTR 0(
设置作业状态=失败
设置RC=1
电话:结束工作
电话:清理
转到终点
)
如果“%postprocess\u type%”=SQL(
调用:日志信息“SQL”
设置post=%SQL\u DIR%\%process\u id%\u post
调用%FWK\u DIR%\run\u sql\u process.bat!post!.sql
)如果“%postprocess\u type%”为“CMD”,则为ELSE(
调用:log_info“CMD”
设置post=%CMD\u DIR%\%process\u id%\u post
调用%FWK\u DIR%\run\u cmd\u process.bat!post!.bat
)否则(
调用:log\u info“无后处理类型”
)
如果%ERRORLEVEL%GTR 0(
设置作业状态=失败
设置RC=1
电话:结束工作
电话:清理
转到终点
)
结束作业-------------------------------------------------
电话:结束工作
电话:清理
转到终点
:显示使用情况
@echo用法:用法为run\u process.bat ProcessName
转到终点
rem——函数定义----------------------------------
雷姆-----------------------------------------------------------
rem功能名称:启动作业
rem说明:
rem检索进程属性并为启动新作业
rem指定的进程。
rem输入:进程id-要启动的进程。
rem输出:作业id-设置新作业id。
雷姆-----------------------------------------------------------
:开始工作
呼叫:log_info“---开始-------------------------------------------”
调用:日志信息“进程:%Process\u id%”
调用:日志信息“环境:%ENV\u NAME%”
调用:日志信息“批处理根:%ENV\u HOME%