Hi All,
Am fairly new to dos. Let me tell you what I want to achieve.
1. I got a bat file I ll call check.bat, when I run this it should compare the system current date with dates from a text file(dates.txt) and give me the required output.
2. Explanation using example.
I will run my check.bat file daily. And I also have dates.txt in my system. The content of dates.txt file will be like :
Username1/Password1/Fri 12/25/2009
Username2/Password2/Thu 12/24/2009
Username3/Password3/Wed 12/23/2009 etc.....
When I run this check.bat it should compare the current system date for eg: 12/25/2009 with every entry from this dates.txt file specified above. And should return a date which is 48 hrs before. So If I run today (12/25/2009) I should get dates which are equal and less than 12/23/2009).
3. I don't know how to do this: Currently my check.bat looks like this :
@echo off
setlocal
set value=
for /f "tokens=*" %%a in ('type C:\Demo\dates.txt 2^>NUL') do set value=%%a
echo value=%value%
@echo %value%
Thanks.
Date calculation using bat and txt file
Moderator: DosItHelp
-
- Expert
- Posts: 391
- Joined: 19 Mar 2009 08:47
- Location: Iowa
You're asking a lot.
Can you change the format of the dates.txt file? Using / as the delimiter as well as part of the date makes this much more difficult.
Some pieces to help you:
month, day, and year can be extracted this way:
for /f "tokens=2* delims=/" %%a in (dates.txt) do (
for /f "tokens=2-4 delims= /" %%c in ("%%b") do (
set month=%%c
set day=%%d
set year=%%e
)
)
Once you have month, day, and year -- you should be able to use the date functions from dostips.com to help you do the rest of the math -- basically convert to Julian and do "normal" math on the result -- and convert back to "regular" date.
http://www.dostips.com/DtTipsDateTime.php
Can you change the format of the dates.txt file? Using / as the delimiter as well as part of the date makes this much more difficult.
Some pieces to help you:
month, day, and year can be extracted this way:
for /f "tokens=2* delims=/" %%a in (dates.txt) do (
for /f "tokens=2-4 delims= /" %%c in ("%%b") do (
set month=%%c
set day=%%d
set year=%%e
)
)
Once you have month, day, and year -- you should be able to use the date functions from dostips.com to help you do the rest of the math -- basically convert to Julian and do "normal" math on the result -- and convert back to "regular" date.
http://www.dostips.com/DtTipsDateTime.php
Parsing dates and calculating time differences
Parsing a file, extracting contents, and calculating time differences - I had to take this challenge. Here is a script - I have added tons of comments so you can follow the logic.
Script is in biterscripting ( http://www.biterscripting.com ). To try, copy and paste the script into file C:/Scripts/Check.txt, start biterscripting, enter the below command.
(You will need to change "/path/to/dates.txt", in the script, to the correct path of the dates.txt file.)
Code: Select all
# Script Check.txt
var str content, line, time, currenttime, timediff day, month, year
# Get current time
set $currenttime = gettime()
# Read dates.txt file into a string variable.
cat "/path/to/dates.txt" > $content
# Go thru content, one line at a time.
while ($content <> "")
do
# Get the next line.
lex "1" $content > $line
# Get the portion of this line after the last space.
stex "^ ^l[" $line > $time
# Extract month, day, year from $time.
stex "]^/^" $time > $month ; stex "^/^]" $time > null
stex "]^/^" $time > $day ; stex "^/^]" $time > null
echo $time > $year
echo -e "DEBUG Got month=" $month ", day=" $day ", year=" $year
# Create the time in standard format - yyyymmddhhmmss.
set $time = $year+$month+$day+"000000"
# What is the time difference between $time and $currenttime ?
set $timediff = difftime(time1($currenttime) time2($time))
#>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
# Do something here with $time, and $timediff.
# I will just echo for debug.
#>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
echo -e "DEBUG Time difference is " $timediff
done
Script is in biterscripting ( http://www.biterscripting.com ). To try, copy and paste the script into file C:/Scripts/Check.txt, start biterscripting, enter the below command.
Code: Select all
script "C:/Scripts/Check.txt"
(You will need to change "/path/to/dates.txt", in the script, to the correct path of the dates.txt file.)