Tom's Guide | Tom's Hardware | Tom's Games
![]() |
![]() |
![]() |
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.
Need a bit of help / advice from someone on how to make the script check the text file to see what it’s 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! )
Copy of the script so far:
@ECHO OFF & SETLOCAL ENABLEEXTENSIONSSETLOCAL
------------
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.txtIF 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
:ENDIFREM 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.

vbscript alternative if you know vbs.
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFSO.GetFolder("C:\temp")
GetCurrentDate = FormatDateTime(Date, vbShortDate)
For Each myFiles In objFolder.Files
If objFSO.GetExtensionName(myFiles) = "txt" Then
fileDate = FormatDateTime(myFiles.DateLastModified, vbShortDate)
If fileDate = GetCurrentDate Then
WScript.Echo myFiles
'send email here. I leave it to you
End If
End If
Next
Sub SendEmail(msg)
Dim WshShell, oExec
Set WshShell = CreateObject("WScript.Shell")
Set oExec = WshShell.Exec("blat " & msg) 'put your blat command here
Do Until oExec.StdOut.AtEndOfLine
strLine = oExec.StdOut.ReadLine()
WScript.Echo strLine
Loop
End Subsave the above as script.vbs and on command line
c:\test> cscript /nologo script.vbs

Thank you Ghostdog, I will give it a go, unfortunately I know absolutly nothing about VB script.
Thanks again,

![]() |
![]() |
![]() |

This post is quite old and has been locked from receiving new replies. Please create a new posting instead.
| Ads by Google |