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

Computer Problems? Computing.Net has over 1,000,000 posts about all things technology related! Over 90% answered within 24 hours! Click here to start participating now! Also, be sure to check out the New User Guide.

Windows Batch help...

Reply to Message Icon

Name: Oblit3ration
Date: August 19, 2008 at 15:08:14 Pacific
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.



Sponsored Link
Ads by Google

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

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


0

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

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

Thanks again,


0

Sponsored Link
Ads by Google
Reply to Message Icon

Related Posts

See More







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


Sponsored links

Ads by Google


Results for: Windows Batch help...

Windows Batch + C++ to copy files? www.computing.net/answers/programming/windows-batch-c-to-copy-files/6254.html

Batch File --- need help www.computing.net/answers/programming/batch-file-need-help/15889.html

Windows batch file required www.computing.net/answers/programming/windows-batch-file-required/19509.html