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



我正在尝试从批处理文件 run_process.bat中调用 Run_sqlldr_process.bat

这就是run_process.bat中调用呼叫的方式:

call %FWK_DIR%run_sqlldr_process.bat !ldr!.ctl !log!.log !bad!.bad !data!.dat %BATCHUSER% %BATCHPWD% %ORACLE_SID%
echo %ERRORLEVEL%
echo %RC%

run_sqlldr_process.bat内部存在故障,此后run_sqlldr_process.bat用返回代码1退出,分配给环境变量RC。但是run_process.bat不会从run_sqlldr_process.bat捕获错误返回代码。echo语句输出0run_process.bat成功完成。

文件Run_sqlldr_process.bat

@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

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

我已经重写了您的CMD脚本要更紧得多,并且我放入一个变量以设置FWK变量,并且还有其他正在使用的变量我从这里删除了其中的许多,并且还有其他脚本变量是从我发现的任何地方设置的其他脚本变量,也许它们来自其他.bat文件?>

让我们在聊天中进行详细介绍,因为有几个未知数,我显然可以自己测试,因为这很大程度上取决于您拥有的自定义脚本。

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

@(
  echo off
  SETLOCAL ENABLEDELAYEDEXPANSION
  SET "_eLvl=0"
  IF /I "%1" EQU "" (
    CALL :Show_Usage
    Exit /B 1
  )
  REM ENTER YOUR DIRECTORIES
  SET "dirname=D:JDABatch_FWKfwk"
  SET "FWK_DIR=C:SOMEDIRECTORY"
  REM If Batch Environment Bat File is missing Quit!  Otherwise load it and continue
  SET "batchenv=!dirname!batchenv.bat"
  IF NOT EXIST "!batchenv!" (
    ECHO Environment file !batchenv!" is missing.
    Exit /B 1
  )
  CALL "!batchenv!"
  SET "_Write-Info=call :log_info "
)
CALL :Main
(
  ENDLOCAL
  EXIT /B %_eLvl%
)

:Main

  CALL :Initialize_Variables
    rem --- Start job ---------------------------------------------
  call :start_job
  FOR %A IN (
    Step1
    Step2
    Step3
  ) DO (
    IF /I !_eLvl! LEQ 0 (
      ECHO. Running :%%A
      CALL :%%A
    ) ELSE (
      ECHO Error Occured!  Skipping :%%A
    )
  )
  IF !_eLvl! GTR 0 (
    SET "job_status=FAILED"
  )
  rem --- End job -------------------------------------------------
  call :end_job
GOTO :EOF

:Initialize_Variables
  rem --- Initialize --------------------------------------------
  REM SET "NLS_DATE_FORMAT=RRRR-MM-DD-HH24:MI"
  REM --- Set up the Date Variable
  FOR /F "Tokens=1-7 delims=MTWFSmtwfsouehrandit:-/. " %%A IN ("%DATE% %TIME: =0%") DO (
    FOR /F "Tokens=2-4 Skip=1 Delims=(-)" %%a IN ('ECHO.^| DATE') DO (
      SET "_%%~a=%%~A"
      SET "_%%~b=%%~B"
      SET "_%%~c=%%~C"
      SET "TIMESTAMP=!_YY!!_mm!!_dd!_%%~D%%~E%%~F"
    )
  )
  REM Setup Logs:
  SET "LOG_FILE=%LOG_DIR%%process_id%_%TIMESTAMP%.log"
  SET "TMP_FILE=%TMP_DIR%%process_id%_%TIMESTAMP%.tmp"
  rem Install error handler.
  rem basename=$(basename $0)
  REM Setup the Process Info and default variable States
  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="
GOTO :EOF

:show_usage
  @echo Usage: Usage is run_process.bat ProcessName
GOTO :EOF
:start_job
  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 -----------------------------------------------------------
  %_Write-Info%"--- Starting -----------------------------------"
  %_Write-Info%"Process          : %process_id%"
  %_Write-Info%"Environment      : %ENV_NAME%"
  %_Write-Info%"Batch root       : %ENV_HOME%"
  %_Write-Info%"Log file         : "%LOG_FILE%""
  %_Write-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"
    SET "_eLvl=1"
 )
  %_Write-Info%"Job id           : %job_id%"
  %_Write-Info%"Process type     : %process_type%"
  %_Write-Info%"Pre-process type : %preprocess_type%"
  %_Write-Info%"Post-process type: %postprocess_type%"
  %_Write-Info%"--- Running ------------------------------------"  
 goto :eof
:Step1
  (
    ECHO."SQL CMD" | FIND /I /V "%preprocess_type%" (
    ) && (
      %_Write-Info%"No Prerocess_type."
    )
  ) || (
    CALL SET "pre=!%preprocess_type%_DIR!%process_id%_pre"
    CALL "%FWK_DIR%run_sql_process.bat" "!pre!.%preprocess_type%"
  )
  SET "_eLvl=%ERRORLEVEL%"
GOTO :EOF
:Step2
  rem --- Execute main process ----------------------------------
  SET "_Valid_Procs=SQL CMD SRE PERL SQLLDR"
  SET "_SQL.Ext=SQL"
  SET "_CMD.Ext=CMD"
  SET "_Perl.Ext=pl"
  SET "_SRE.Ext=xml"
  rem Check is valid Process Type
  ECHO."%_Valid_Procs%" | FIND /I /V "%process_type%" >NUL && (
    %_Write-Info%"Unsupported process type %process_type%."
    SET "job_status=FAILED"
    SET "_eLvl=1"
    GOTO :EOF
  )
  IF /I "%process_type%" EQU "SQLLDR" (
      %_Write-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 SET "FWK_CMD=%FWK_DIR%run_SQLLDR_process.bat" !ldr!.ctl !log!.log !bad!.bad !data!.dat %BATCHUSER% %BATCHPWD% %ORACLE_SID%"
  ) ELSE (
    FOR %%A IN (
      %_Valid_Procs%"
    ) DO (
      %_Write-Info%"%%A."
      CALL SET "FWK_CMD="%FWK_DIR%run_%%A_process.bat" "Main=!%%A_DIR!%process_id%.!_%%A.ext!""
    )
  )
  %_Write-Info% Running: %FWK_CMD%
  call "%FWK_CMD%"
  SET "_eLvl=%ERRORLEVEL%"
GOTO :EOF
:Step3
  (
    ECHO."SQL CMD" | FIND /I /V "%postprocess_type%" (
    ) && (
      %_Write-Info%"No Prerocess_type."
    )
  ) || (
    CALL SET "pre=!%preprocess_type%_DIR!%process_id%_post"
    CALL "%FWK_DIR%run_%preprocess_type%_process.bat" "!pre!.%preprocess_type%"
  )
  SET "_eLvl=%ERRORLEVEL%"
GOTO :EOF


:end_job
  rem -----------------------------------------------------------
  rem Function Name: end_job
  rem Description  :
  rem   End the current job.
  rem Input        : job_id
  rem Output       : N/A
  rem -----------------------------------------------------------
  %_Write-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%"
  %_Write-Info%"Job status       : %job_status%"
  %_Write-Info%"Job status msg   : %job_status_message%"
  rem %_Write-Info%"Volume           : %job_volume%"
  %_Write-Info%"Error count      : %job_error_count%"
  %_Write-Info%"Warning count    : %job_warning_count%"    
  CALL :Cleanup
goto :eof



:cleanup 
   rem -----------------------------------------------------------
   rem Function Name: clear
   rem Description  :
   rem   Handle clean up.
   rem Input        : N/A
   rem Output       : N/A
   rem -----------------------------------------------------------
  if not '%job_status%' == 'COMPLETED' (
    %_Write-Info%"--------- Ended with failure -------------------------"
  ) else (
    %_Write-Info%"----------------------- End --------------------------"
  )
goto :eof

:log_info
  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 -----------------------------------------------------------
  SET "stamp=%TIMESTAMP%"
  rem echo [INFO.][%stamp%] %1
  rem echo.
  rem echo "%LOG_FILE%"
  echo.[INFO.][%stamp%] %*>> "%LOG_FILE%"
  echo.>> "%LOG_FILE%"
goto :eof

最新更新