对于Windows批处理脚本中的循环

时间:2013-11-06 15:03:00

标签: windows batch-file

我的Windows批处理脚本每隔10分钟调用另一批。我使用For循环来调用批处理,然后等待10分钟。


@ECHO OFF
echo %date:~0,10% %time% Running Post To GIM II ...
FOR %%a IN (1,2,3,4,5) DO (
echo %date:~0,10% %time% Starting Post To GIM II ...
CALL D:\Appshares\Autosys\scripts\Sophis\_commonJobWrapper.bat    D:\sophis\Client\UBS_PostToGIMII.exe
echo %date:~0,10% %time% Ending Post To GIM II ...
PING -n 600 127.0.0.1 >NUL 2>&1 
)

但是内部批处理接受另一个.exe作为参数。但内部批处理只执行一次然后退出。内部批处理代码是这样的。任何人都可以告诉为什么循环在1次运行后总是退出吗?


@echo off

REM parameter 1 is the program to be called, parameter 2 onwards are additional optional parameters
REM -- Record Time
echo --- JobWrapper Start : %date% %time% ---

REM -- Set starting folder to where application was called from
  cd /d %~dp0
REM -- Set Secure varibales via a securly permissioned file
  if exist _CommonBeginSecure.BAT (call _CommonBeginSecure.BAT)
REM -- Debug mode, start message
  if "%_senddebug%" NEQ "" cscript.exe /NOLOGO %_sendmail% "%_applic% (%_envname%): Autosys job started - %~nx1" "Logfile: %~n1.out" %_senddebug% %_sendfrom%
REM -- Call program passing thru any parameters (currently maximum of 9)
  echo Calling: %1
  call %1 %2 %3 %4 %5 %6 %7 %8 %9
REM -- Error Handling
if %errorlevel% NEQ 0 goto error
goto end

:error

REM -- Send Failed Message
if "%_sendto%" NEQ "" cscript.exe /NOLOGO %_sendmail% "%_applic% (%_envname%): Autosys job FAILED - %~nx1" "Logfile: %~n1.out  (Errorlevel: %2)" %_sendto% %_sendfrom%
exit 1

:end
REM - Debug mode, end message
if "%_senddebug%" NEQ "" cscript.exe /NOLOGO %_sendmail% "%_applic% (%_envname%): Autosys job finished - %~nx1" "Logfile: %~n1.out" %_senddebug% %_sendfrom%
REM -- Record Time 
echo --- JobWrapper End : %date% %time% ---    
exit 0
rem - Notes:
rem %0 = Full name of this job 
rem %~dp0 = Actual path of this job
rem     %~nx0 = Filename of this job
rem     %~n0  = Filename of this job (excluding extension)

1 个答案:

答案 0 :(得分:1)

您需要使用exit /b errorcode

Exit命令,没有/ b关闭cmd实例。用/ b关闭正在运行的批处理文件。