• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 539
  • Last Modified:

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

0
loftyworm
Asked:
loftyworm
  • 4
  • 3
1 Solution
 
AmazingTechCommented:
Shouldn't this line

set yesterday=datefile[1].txt

Be a valid file? I think you named it

set yesterday=datefile.txt
0
 
Bryan ButlerCommented:
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.  
0
 
loftywormAuthor Commented:
@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?
0
Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

 
loftywormAuthor Commented:
CORRECTION:
This command worked from the command line, just not when I am calling it.
Check-and-email datefile.txt archaeology[0001].4bk
0
 
AmazingTechCommented:
Both scripts are in the c:\4dBackup?
0
 
loftywormAuthor Commented:
No, the are in c:\4dbackup\backup\
that is why I am fully qualifying everything
0
 
AmazingTechCommented:
That's probably your problem then.

%1 is just the file name so it can't find the file Archaeobase[0001].4BK in your current directory. To get it's date.

Try adding your directory to the path. Make sure the 2 datefile*.txt is in c:\4dbackup
SET PATH=%PATH%;c:\4dbackup\backup
cd /d c:\4dbackup
check
0
 
loftywormAuthor Commented:
THANK YOU :)
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

  • 4
  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now