@echo off
@if not "%OS%"=="Windows_NT" goto :EXIT

rem ****************************************************************
rem  Script for UniFi Replication
rem  Created: 06/08/2000 by Dmitri Levin
rem  Last Modified: 
rem ****************************************************************

rem ****************************************************************
rem      Variable definitions
rem ****************************************************************

set db-name=unifipc
set replic-dir=\\nt_los\replictn
set replic-db=E:\Database\UniFiRPT\%db-name%
set log-file=%replic-dir%\replictn.log

rem to Stop Replication create empty file named stop-replic.txt
if exist %replic-dir%\stop-replic.txt goto :EXIT

rem standard variables
set dlc=d:\dlc83c
set path=%dlc%\bin;%path%
set replic-ai=%replic-dir%\%db-name%
set date-file=%replic-dir%\today.out

rem ****************************************************************
rem  Main Block
rem ****************************************************************

for /f "delims=," %%A in ( 'date /t' ) do set curr-day=%%A
set file-day=
if exist %date-file% ( for /f "delims=," %%A in ( %date-file% ) do set file-day=%%A)
if not "%curr-day%"=="%file-day%" call :PROCEDURE-FIRST-RUN

call :PROCEDURE-TIME

rem  Check replication database is available
if not exist %replic-db%.db echo Replication Database does not exist -- %curr-time% >> %log-file%
if not exist %replic-db%.db goto :NO-REPLICATION
if exist %replic-db%.lk echo Replication Database is in use -- %curr-time% >> %log-file%
if exist %replic-db%.lk goto :NO-REPLICATION

set ai-cnt=0
rem  Replicate AI extnets
:MAIN-LOOP
  call :PROCEDURE-FIND-FIRST-AI
  if not exist %replic-ai%.ai%ai-num% goto :REPLIC-DONE
  call :PROCEDURE-APPLY-AI
goto :MAIN-LOOP

:REPLIC-DONE

call :PROCEDURE-TIME
if "%ai-cnt%"=="0" ( echo AI extent could not be found -- %curr-time% >> %log-file% ) else echo %ai-cnt% AI applied --- %curr-time% >> %log-file%
echo . >> %log-file%
if "%ai-cnt%"=="0" call :PROCEDURE-E-Mail

:NO-REPLICATION
goto :EXIT

rem ****************************************************************
rem  APPLY AI PROCEDURE
rem ****************************************************************
:PROCEDURE-APPLY-AI

  echo Attempt to apply %replic-ai%.ai%ai-num% -- %curr-time% >> %log-file%
  %COMSPEC% /C _rfutil.exe %replic-db% -C roll forward -a %replic-ai%.ai%ai-num%
  del /q %replic-ai%.ai%ai-num%

  rem Add 1 to AI count
  set /a value=%ai-cnt%
  set /a value+=1
  set ai-cnt=%value%
goto :EXIT

rem ****************************************************************
rem  FIND FIRST AI PROCEDURE
rem ****************************************************************
:PROCEDURE-FIND-FIRST-AI

  set ai-num=0
  for %%A in ( %replic-ai%.ai* ) do call :PROCESS1 %%A
  goto :EXIT

  :PROCESS1
    rem I assume here that neither NT name nor directories have a periods in the name
    for /f "delims=. tokens=2" %%A in ("%1") do set tmp-num=%%A
    set tmp-num=%tmp-num:~2%
    set /a value1=%tmp-num%
    set /a value2=%ai-num%
    if "%ai-num%"=="0" ( set ai-num=%tmp-num% ) && ( goto :EXIT )
    if %value1% LSS %value2% set ai-num=%tmp-num%
  goto :EXIT

goto :EXIT

rem ****************************************************************
rem  TIME PROCEDURE
rem ****************************************************************
:PROCEDURE-TIME

  for /f %%A in ( 'time /t' ) do set curr-time=%%A 

goto :EXIT

rem ****************************************************************
rem E-Mail PROCEDURE 
rem ****************************************************************
:PROCEDURE-E-Mail

  set email-file=%main-dir%\message.txt

  echo Check replication on NT_LOS box ( replic.bat ) AT scheduler > %email-file%
  echo apply-ai.bat script could not find any AI extents on NT_LOS >> %email-file%
  echo . >> %email-file%
  date /t >> %email-file%
  CALL :PROCEDURE-TIME
  echo at %curr-time% >> %email-file%
  echo . >> %email-file%
  echo apply-ai.bat script >> %email-file%

  blat.exe %email-file% -t to-address@company.com -c copy-to-address@company.com -s "Replication not Started. Check NT_Source." -i NTscript@company.com -f from-address@company.com -server SMTP_MAIL

  del %email-file%

goto :EXIT

rem ****************************************************************
rem  FIRST-RUN PROCEDURE - is running only during first replication of the day
rem ****************************************************************
:PROCEDURE-FIRST-RUN

  set line=*******************************************

  rem Log File entry for the day
  echo %line%  >> %log-file%
  date /T >> %log-file%
  echo %line%  >> %log-file%

  date /t > %date-file%

rem ****************************************************************
rem  FIRST-RUN PROCEDURE END
rem ****************************************************************
goto :EXIT

:EXIT
1