Question : Additional help with my batch script to check a file's date prior to sending...

Hi,

Total n00b here when it comes to basic batch scripting, I've attempted to put together a mini batch script that takes a text file and emails it to an address using the 'Blat' cmd line SMTP emailer. (with lots of help from you guys on here I must say - thanks so far)

Need a bit of help / advice from someone on how to make the script check the text file to see what its modified / created date is, and then only email it if the date matches the current day. I.e. if the script runs on Monday 01/01/2008, I want it to check the .txt file to see if it was modified / created on 01/01/2008, if it was continue with the rest of the script, if not then email a separate message stating that no file was found for 'today'.

Many thanks for any help (bear in mind I'm still learning all this stuff! )

[Script attached]


Code Snippet:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
@ECHO OFF & SETLOCAL ENABLEEXTENSIONS
 
SETLOCAL
 
------------
REM Configurable settings
------------
SET TX_FILE_FOLDER=C:\order_data
SET LOG_FOLDER=c:\logs
 
------------
REM Get the date and time for filenames and messages
------------
FOR /F "tokens=1-4 delims=/- " %%i IN ('date/t') DO SET TODAYS_DATE=%%i%%j%%k
FOR /F "tokens=1-4 delims=:/- " %%i IN ('time/t') DO SET START_TIME=%%i%%j%%k
 
------------
REM Create a log filename
------------
SET LOG_FILENAME=%LOG_FOLDER%\send_%TODAYS_DATE%.log
 
------------
REM Log that we've started
------------
ECHO Send started on %TODAYS_DATE% @ %START_TIME% > %LOG_FILENAME%
 
------------
REM Get the end time
------------
FOR /F "tokens=1-4 delims=:/- " %%i IN ('time/t') DO SET END_TIME=%%i%%j%%k
 
------------
REM Log that we've finished
------------
ECHO Send finished at %TODAYS_DATE% @ %END_TIME% >> %LOG_FILENAME%
 
------------
REM Start of email procedure
------------
SET SUBJECT="Email todays order data"
SET TOADDRESS=test_sender@test.com
SET RECEIPT=NO
SET ATTACH=%TX_FILE_FOLDER%\order.txt
 
IF EXIST c:\check_bit.txt GOTO ENDIF
SET SMTPSERVER=10.0.0.1
SET FROMADDRESS=test_recipient@test.com
c:\blat\blat -install %smtpserver% %fromaddress% -savesettings
ECHO %TODAYS_DATE% %START_TIME% > c:\check_bit.txt
:ENDIF
 
REM IF "%receipt%"=="YES" SET EXTRAS=-r
 
------------
REM Send email with attachment
------------
ECHO Sending files....
c:\blat\blat c:\blat\body.txt -subject %subject% -to %toaddress% -attach %attach%
ECHO Send complete.
Open in New Window Select All

Answer : Additional help with my batch script to check a file's date prior to sending...

This should do it.

1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
@echo off
setlocal enabledelayedexpansion
 
------------
REM Configurable settings
------------
SET TX_FILE_FOLDER=C:\order_data
SET LOG_FOLDER=c:\logs
 
------------
REM Get the date and time for filenames and messages
------------
FOR /F "tokens=1-4 delims=/- " %%i IN ('date/t') DO SET TODAYS_DATE=%%i%%j%%k
FOR /F "tokens=1-4 delims=:/- " %%i IN ('time/t') DO SET START_TIME=%%i%%j%%k
 
------------
REM Create a log filename
------------
SET LOG_FILENAME=%LOG_FOLDER%\send_%TODAYS_DATE%.log
 
------------
REM Log that we've started
------------
ECHO Send started on %TODAYS_DATE% @ %START_TIME% > %LOG_FILENAME%
 
------------
REM Get the end time
------------
FOR /F "tokens=1-4 delims=:/- " %%i IN ('time/t') DO SET END_TIME=%%i%%j%%k
 
------------
REM Log that we've finished
------------
ECHO Send finished at %TODAYS_DATE% @ %END_TIME% >> %LOG_FILENAME%
 
------------
REM Start of email procedure
------------
SET SUBJECT="Email todays order data"
SET TOADDRESS=test_sender@test.com
SET RECEIPT=NO
SET ATTACH=%TX_FILE_FOLDER%\order.txt
 
for /F "tokens=*" %%G in ("%attach%") do (
 set filetime=%%~tG
 set filedate=!filetime:~6,4!!filetime:~0,2!!filetime:~3,2!
)
 
IF EXIST c:\check_bit.txt GOTO ENDIF
SET SMTPSERVER=10.0.0.1
SET FROMADDRESS=test_recipient@test.com
c:\blat\blat -install %smtpserver% %fromaddress% -savesettings
ECHO %TODAYS_DATE% %START_TIME% > c:\check_bit.txt
:ENDIF
 
REM IF "%receipt%"=="YES" SET EXTRAS=-r
 
------------
REM Send email with attachment
------------
if "%filedate%"=="%TODAYS_DATE%" (
 ECHO Sending files....
 c:\blat\blat c:\blat\body.txt -subject %subject% -to %toaddress% -attach %attach%
 ECHO Send complete.
) else (
 c:\blat\blat - -body "No file was found for %TODAYS_DATE%" -subject %subject% -to %toaddress%
 ECHO Send complete.
)
Open in New Window Select All
Random Solutions  
 
programming4us programming4us