2016-06-22 216 views
0

我有一个批处理文件,我想要计划运行。贝娄是批处理文件。Windows服务器任务计划程序

@ECHO OFF 
SET LOGFILE_DATE=%DATE:~4,2%.%DATE:~7,2%.%DATE:~10,4% 
SET LOGFILE_TIME=%TIME:~0,2%.%TIME:~3,2% 
SET LOGFILE="C:\N-able\Projects\AML\NDB_Bank\devinda\AML_Data_Auto-%LOGFILE_DATE%-%LOGFILE_TIME%.log" 
call :Logit >> %LOGFILE% 
exit /b 0 

:Logit 
set "firstLine" 
for /f "tokens=*" %%A in (C:\AML_handshake.txt) do ( 
     If not defined firstLine set "firstLine=%%A" 
     set Lastline=%%A 
) 
set "datevalue=%firstLine:~9,10%" 

REM *** FIRST CHECK *** 
if "EOF" NEQ "%Lastline%" goto fail 

REM *** SECOND CHECK *** 
set day=-1 
echo >"%temp%\%~n0.vbs" s=DateAdd("d",%day%,now) : d=weekday(s) 
echo>>"%temp%\%~n0.vbs" WScript.Echo year(s)^& right(100+month(s),2)^& right(100+day(s),2) 
for /f %%a in ('cscript /nologo "%temp%\%~n0.vbs"') do set "result=%%a" 
del "%temp%\%~n0.vbs" 
set "YYYY=%result:~0,4%" 
set "MM=%result:~4,2%" 
set "DD=%result:~6,2%" 
set "data=%dd%-%mm%-%yyyy%" 
if "%data%" NEQ "%datevalue%" goto fail 

goto prog 
:prog 
echo Incremental Data Extraction - Started 
sqlplus -s ***@//**.**.**.**:****/*** @call_proc.sql 
echo Incremental Data Extraction - Ended 
echo Generating AML Files - Started 
start "C:\Extractor" TableExtractor.exe 
echo Generating AML Files - Ended 

:fail 
echo Process Completed 

AML_handshake.txt在上午4:00传送到服务器。我安排我的工作在凌晨4:30运行。我的问题是出于某种原因,AML_handshake.txt文件在凌晨4点不可用,并且文件在凌晨4点半之后传输,如何从调度程序运行我的作业?这项工作一天只能运行一次。

回答

1

将此放在文件顶部。它会检查文件,如果它不存在,请等待30分钟或直到输入。

@ECHO OFF 
:retest 
if exist C:\AML_handshake.txt (
goto :validfile 
) else (
    Echo File does not exist 
    timeout 1800 
    goto :retest 
) 
:validfile 

整个代码看起来像这样。

@ECHO OFF 
:retest 
if exist C:\AML_handshake.txt (
goto :validfile 
) else (
    Echo File does not exist 
    timeout 1800 
    goto :retest 
) 
:validfile 
SET LOGFILE_DATE=%DATE:~4,2%.%DATE:~7,2%.%DATE:~10,4% 
SET LOGFILE_TIME=%TIME:~0,2%.%TIME:~3,2% 
SET LOGFILE="C:\N-able\Projects\AML\NDB_Bank\devinda\AML_Data_Auto-%LOGFILE_DATE%-%LOGFILE_TIME%.log" 
call :Logit >> %LOGFILE% 
exit /b 0 

:Logit 
set "firstLine" 
for /f "tokens=*" %%A in (C:\AML_handshake.txt) do ( 
     If not defined firstLine set "firstLine=%%A" 
     set Lastline=%%A 
) 
set "datevalue=%firstLine:~9,10%" 

REM *** FIRST CHECK *** 
if "EOF" NEQ "%Lastline%" goto fail 

REM *** SECOND CHECK *** 
set day=-1 
echo >"%temp%\%~n0.vbs" s=DateAdd("d",%day%,now) : d=weekday(s) 
echo>>"%temp%\%~n0.vbs" WScript.Echo year(s)^& right(100+month(s),2)^& right(100+day(s),2) 
for /f %%a in ('cscript /nologo "%temp%\%~n0.vbs"') do set "result=%%a" 
del "%temp%\%~n0.vbs" 
set "YYYY=%result:~0,4%" 
set "MM=%result:~4,2%" 
set "DD=%result:~6,2%" 
set "data=%dd%-%mm%-%yyyy%" 
if "%data%" NEQ "%datevalue%" goto fail 

goto prog 
:prog 
echo Incremental Data Extraction - Started 
sqlplus -s ***@//**.**.**.**:****/*** @call_proc.sql 
echo Incremental Data Extraction - Ended 
echo Generating AML Files - Started 
start "C:\Extractor" TableExtractor.exe 
echo Generating AML Files - Ended 

:fail 
echo Process Completed 
相关问题