Link to home
Start Free TrialLog in
Avatar of Lofty Worm
Lofty WormFlag for United States of America

asked on

Simple batch file to compare dates and email

Ok, Who knew this would be so complicated, but I am trying.

So all I want to do is compare 2 files, and email me if one is older then the other, I do this with 2 Batch files, one I got from here on EE, and the other I wrote to use the latter.

My file is the problem I think.  If I use the EE batch form the command line, it works fine, but for some reason the EE batch is not working when I try to pass it commands

the output for the EE batch below is this;

Archaeobase[0001].4BK
datefile[1].txt
~6,4TestTime:~0,5%TestTime:~-2,1%TestTime:~11,5
2009/02/11P02:40


This appears to me like the Arch file is not being processed correctly from the EE batch file, but for the life of me I can't figure out why

:(  please help
------------
-Check.bat file, I made this
------------
echo off
for /f "tokens=*" %%a in ('dir c:\4dBackup\Archaeobase* /b') do set arch=%%a
for /f "tokens=*" %%b in ('dir c:\4dBackup\Ethnobase* /b') do set ethno=%%b
set yesterday=datefile[1].txt
 
call Check-and-email.bat %arch% %yesterday%
call Check-and-email.bat %ethno% %yesterday%
del /f c:\4dBackup\datefile.txt
dir c:\4dBackup\ /a-d >c:\4dBackup\datefile.txt
 
 
--------------------------
- Check-and-email.bat I got this from another post on EE, it works from the command line
--------------------------
echo off
 
setlocal
 
echo %1
echo %2
 
call :FORMATSTR str1 "%~t1"
call :FORMATSTR str2 "%~t2"
 
set result="Archaeology-DB Database Backup Failed"
echo %str1%
echo %str2%
 
if /i "%str1%" GTR "%str2%" (set result="Archaeology-DB Database Backup Suceeded")
 
blat datefile.txt -t me@here.com -s %result%
 
goto :EOF
 
:FORMATSTR
 
set TestTime=%~2
set TestTime=%TestTime:~6,4%/%TestTime:~0,5%%TestTime:~-2,1%%TestTime:~11,5%
 
set %1=%TestTime%

Open in new window

Avatar of AmazingTech
AmazingTech

Shouldn't this line

set yesterday=datefile[1].txt

Be a valid file? I think you named it

set yesterday=datefile.txt
arch=%%a
Are you thinking you have an array here?  If you combine this into one script, and make the loop:

for /f "tokens=*" %%b in ('dir c:\4dBackup\Ethnobase* /b') do set ethno=%%b

call the check each time, then that should work.  
Avatar of Lofty Worm

ASKER

@AmazingTech
The datefile.txt and datefile[1].txt files are to create a file that has a modification time to compare against.  Final version they will match, but in this testing, I have made sure that the files existm the script is not failing at that point.

@developedtester
I am not completely following you.  In a batch script, any for loop variables have to have the %% in front, from the command line you only use one but in a scrip there must be 2.
I do not see how I could combine the two calls, one is working on the arch file and the other is working on the ehtno file.  In any case, I can't even get one ot work.  It passes the datefile modified time, but not the other.  I just tried this command  Check-and-email datefile.txt archaeology[0001].4bk manually, and it still fails.  could the [ ] be the problem?
CORRECTION:
This command worked from the command line, just not when I am calling it.
Check-and-email datefile.txt archaeology[0001].4bk
Both scripts are in the c:\4dBackup?
No, the are in c:\4dbackup\backup\
that is why I am fully qualifying everything
ASKER CERTIFIED SOLUTION
Avatar of AmazingTech
AmazingTech

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
THANK YOU :)