Lofty Worm
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%Tes tTime:~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
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
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%
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.
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.
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?
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?
ASKER
CORRECTION:
This command worked from the command line, just not when I am calling it.
Check-and-email datefile.txt archaeology[0001].4bk
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?
ASKER
No, the are in c:\4dbackup\backup\
that is why I am fully qualifying everything
that is why I am fully qualifying everything
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
THANK YOU :)
set yesterday=datefile[1].txt
Be a valid file? I think you named it
set yesterday=datefile.txt