Forums before death by AOL, social media and spammers... "We can't have nice things"
|    alt.msdos.batch    |    Fun with MS-DOS batch files    |    42,547 messages    |
[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]
|    Message 41,986 of 42,547    |
|    JJ to Herbert Kleebauer    |
|    Re: DOS Batch program countdown days unt    |
|    03 Feb 22 16:05:49    |
   
   From: jj4public@gmail.com   
      
   On Wed, 2 Feb 2022 18:05:59 +0100, Herbert Kleebauer wrote:   
   > On 02.02.2022 16:02, Chris Roberts wrote:   
   >> DOS Batch program to countdown days/year (countdown date)   
   >>   
   >> Hi,   
   >> Maybe someone can assist?   
   >> I am having trouble figuring out how to do this using a DOS/BATCH program.   
   >>   
   >> For instance.   
   >> $ echo %date%%time%   
   >> Wed 02/02/2022 9:54:30.16   
   >>   
   >> Would someone here know how I can subtract todays date from 11/8/22 to   
   easily see how many days I still have to go?   
   >   
   > Below are two subroutines which convert a date to the   
   > numbers of days since 1. Jan. 1901 and reverse. Just call   
   > the subroutine :date2day for both dates and calculate   
   > the difference.   
   >   
   > @echo off   
   > setlocal disabledelayedexpansion   
   >   
   >:: extract the variables %y% %m% %d% from the %date% variable   
   >:: (this depends on the local date format)   
   [snip]   
      
   And to detect the current date format, it can be done like below (warning:   
   long text).   
      
   @echo off   
   setlocal enabledelayedexpansion   
      
   for /f "delims=" %%A in ('2^>nul wmic /namespace:\\root\default class   
   stdregprov call getstringvalue hdefkey^="&h80000001" ssubkeyname^="control   
   panel\international" svaluename^=sshortdate ^| find "sValue"') do (   
    for /f "tokens=3 delims=; " %%B in ("%%A") do set f=%%B   
   )   
   set f=%f:~1,-1%   
   echo date format = %f%   
      
   rem i=index (-1=none), l=length   
   set yi=-1   
   set yl=0   
   set mi=-1   
   set ml=0   
   set di=-1   
   set dl=0   
   for /l %%A in (0,1,9) do (   
    if "!f:~%%A,1!" == "y" (   
    if !yi! lss 0 set yi=%%A   
    set/a yl+=1   
    ) else if "!f:~%%A,1!" == "M" (   
    if !mi! lss 0 set mi=%%A   
    set/a ml+=1   
    ) else if "!f:~%%A,1!" == "d" (   
    if !di! lss 0 set di=%%A   
    set/a dl+=1   
    )   
   )   
   echo year: index=%yi%, length=%yl%   
   echo month: index=%mi%, length=%ml%   
   echo date: index=%di%, length=%dl%   
      
   --- SoupGate-Win32 v1.05   
    * Origin: you cannot sedate... all the things you hate (1:229/2)   
|
[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]
(c) 1994, bbs@darkrealms.ca