rem @echo off
rem WinSCP Server Automated Backup.
rem Created for Quantact.com

rem -----------------------------------------------------------------------------------------------------------------------------------
rem Settings.
rem -----------------------------------------------------------------------------------------------------------------------------------

rem Server Login
rem -----------------------------------------------------------------------------------------------------------------------------------
set session=sftp://abc:xyz@opq.com:22

rem Folder Settings.
rem -----------------------------------------------------------------------------------------------------------------------------------
set server_folder=/u01/rmsbatch/data/in/RTLOG/incoming/
set local_folder=D:\OracleRetailStore\Server\pos\bin\POSLog\
set logfile_folder=D:\WinSCP\log_file\
set report_folder=D:\WinSCP\Reports\
set config_path=D:\OracleRetailStore\Client\pos\config

rem Variables' Settings
rem -----------------------------------------------------------------------------------------------------------------------------------
set l_successcount=0
set l_errorcount=0
set l_totalcount=0

rem Filename settings
rem -----------------------------------------------------------------------------------------------------------------------------------
rem auto_name will set the archive file to dd_mm_yyyy=h_m eg. 12_02_2010-17_58
set auto_name=1
rem manual_name is for when auto_name is set to 0.
set manual_name=dwnld

rem Path to WinSCP
rem -----------------------------------------------------------------------------------------------------------------------------------
set winscp_path=C:\Progra~1\WinSCP\WinSCP.exe
 
rem Log File Settings - 1 or 0
rem -----------------------------------------------------------------------------------------------------------------------------------
set logfile=1

rem Fetching Store_ID from application.properties file
rem -----------------------------------------------------------------------------------------------------------------------------------
for /f "tokens=1,2 eol=/ delims=/=" %%a in ('findstr /i /c:"StoreID"  %config_path%\application.properties') do set StoreID=%%b
echo %logfile%%StoreID%

set filename=%manual_name%
set current_date=%date:~7,2%-%date:~4,2%-%date:~10,4%

rem -----------------------------------------------------------------------------------------------------------------------------------
rem DO NOT EDIT BELOW HERE
rem -----------------------------------------------------------------------------------------------------------------------------------

rem Moving RTLOGs from 'error' folder to 'POSLog' folder
rem -----------------------------------------------------------------------------------------------------------------------------------
dir /b  %local_folder%"/error" > %local_folder%error_put.tmp
for  /f %%i in (%local_folder%error_put.tmp) do  (
move %local_folder%error\%%i %local_folder%)

rem Writing the RTLOG filenames into 'total.tmp' and taking the total RTLOG count
rem -----------------------------------------------------------------------------------------------------------------------------------
dir /b  %local_folder%*%StoreID%*.DAT  >%local_folder%total.tmp
for  /f %%i in (%local_folder%total.tmp) do  (set /a l_totalcount+=1)
echo "Total files = "%l_totalcount%

rem -----------------------------------------------------------------------------------------------------------------------------------
rem Sending RTLOGs to server 1 at a time
rem -----------------------------------------------------------------------------------------------------------------------------------

for  /f %%i in (%local_folder%total.tmp) do  (

set ERRORLEVEL=1
del script_put.tmp

rem Preparing WinSCP script - script_put.tmp
rem -----------------------------------------------------------------------------------------------------------------------------------
echo option batch on > script_put.tmp
echo option confirm off >> script_put.tmp
echo open %session% >> script_put.tmp

echo put %local_folder%%%i %server_folder% >> script_put.tmp
echo exit >> script_put.tmp

rem Setting log file
rem -----------------------------------------------------------------------------------------------------------------------------------
IF "%logfile%"=="1" (set filelog=/log=%local_folder%%filename%.txt) else (set filelog=)

rem Executing WinSCP script
rem -----------------------------------------------------------------------------------------------------------------------------------
IF EXIST %local_folder%%%i (
%winscp_path% /script=script_put.tmp /log=%logfile_folder%putftplog_%current_date%.txt

rem Checking execution status of WinSCP script
rem -----------------------------------------------------------------------------------------------------------------------------------
rem Move files to 'error' folder if WinSCP script fails
IF ERRORLEVEL 1 move %local_folder%%%i %local_folder%error
rem Move files to 'archive' folder if WinSCP script succeeds
IF ERRORLEVEL 0 move %local_folder%%%i %local_folder%archive
)

rem Taking count of files successfully transferred
rem -----------------------------------------------------------------------------------------------------------------------------------
IF EXIST %local_folder%archive\%%i (	
set /a l_successcount+=1
)

rem Taking count of files errored out
rem -----------------------------------------------------------------------------------------------------------------------------------
IF EXIST %local_folder%error\%%i (
	set /a l_errorcount+=1
)

)

rem Deleting temp files
rem -----------------------------------------------------------------------------------------------------------------------------------
del %local_folder%error_put.tmp
del %local_folder%total.tmp

rem Writing to the report
rem -----------------------------------------------------------------------------------------------------------------------------------
IF EXIST %report_folder%Report_%current_date%.csv (	
echo "99999",%date:~7,2%-%date:~4,2%-%date:~10,4%,%l_totalcount%,%l_successcount%,%l_errorcount%,%time% >> %report_folder%Report_%current_date%.csv
)ELSE (
	echo StoreID,DATE,TOTAL,SUCCESSFUL,ERRORED,LAST_TIMESTAMP > %report_folder%Report_%current_date%.csv
	echo "99999",%date:~7,2%-%date:~4,2%-%date:~10,4%,%l_totalcount%,%l_successcount%,%l_errorcount%,%time% >> %report_folder%Report_%current_date%.csv
)

@echo off