Computing.Net > Forums > Programming > Windows Batch help...

Computing.Net: Over 1,000,000 posts about all things technology related! Over 90% answered within 24 hours! Click here to sign up now, it's free!

Windows Batch help...

Reply to Message Icon

Original Message
Name: Oblit3ration
Date: August 19, 2008 at 15:08:14 Pacific
Subject: Windows Batch help...
OS: 2000/XP
CPU/Ram: Intel 4gb ram
Comment:

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 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.


Report Offensive Message For Removal


Response Number 1
Name: ghostdog
Date: August 19, 2008 at 18:23:06 Pacific
Reply: (edit)

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 Sub

save the above as script.vbs and on command line


c:\test> cscript /nologo script.vbs


Report Offensive Follow Up For Removal

Response Number 2
Name: Oblit3ration
Date: August 20, 2008 at 02:39:57 Pacific
Reply: (edit)

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

Thanks again,


Report Offensive Follow Up For Removal







Post Locked

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


Go to Programming Forum Home








Do you have your own blog?

Yes
No
I did before
I will soon


View Results

Poll Finishes In 4 Days.
Discuss in The Lounge
Poll History




Data Recovery Software