Question

Je veux juste comprendre,

Comment un fichier batch (CMD) me dire combien de jours, je suis parti de toute date ... ???

Tels que:

set setdate=24/07/2009
echo The date is now: %date%
echo Your set date is: %setdate%
echo You're %days% days left from %setdate%

Merci!

Était-ce utile?

La solution

Voici une solution simple VBScript:

Dim dt:    dt    = DateValue(WScript.Arguments.Unnamed(0))
Dim dtNow: dtNow = Now
Dim diff:  diff  = DateDiff("d", dtNow, dt)

WScript.Echo "The date is now:  " & FormatDateTime(dtNow, vbShortDate)
WScript.Echo "Your set date is: " & FormatDateTime(dt, vbShortDate)
WScript.Echo "You're " & diff & " days left from " & FormatDateTime(dt, vbShortDate)

Vous pouvez appeler ce script depuis votre fichier de commandes et préciser la date cible comme ceci:

cscript filename.vbs 12/25/2009 //nologo

Autres conseils

... d'accord, puisque le demandeur veut faire tout le travail pour lui, voici le script:

@echo off & setlocal
set now=%date%
set then=2010-08-01

:: split into year, month, day
set nY=%now:~0,4%&set nM=%now:~5,2%&set nD=%now:~8,2%
set tY=%then:~0,4%&set tM=%then:~5,2%&set tD=%then:~8,2%

:: remove leading zero
if "%nM:~,1%"=="0" set nM=%nM:~1%
if "%tM:~,1%"=="0" set tM=%tM:~1%
if "%nD:~,1%"=="0" set nD=%nD:~1%
if "%tD:~,1%"=="0" set tD=%tD:~1%

set mdays=31 28 31 30 31 30 31 31 30 31 30 31
set n=0
set t=0
call :days n %nM% %mdays%
call :days t %tM% %mdays%

set /a d=(t+tD)-(n+nD) + ((tY-nY) * 365)

goto :skip
:days
set var=%1
set M=%2
set i=0
shift & shift
:days_loop
set /a i=i+1    
if %i% geq %M% goto :EOF
set /a %var%=%var%+%1
shift & goto :days_loop
:skip

echo The difference between %now% and %then% is %d% days.

A titre de comparaison, la même chose en Python:

import datetime
now = datetime.datetime.now()
then = datetime.datetime(
    # Do NOT use leading zeros here.
    year = 2010,
    month = 8,
    day = 1,
)
diff = then - now

peut être possible d'y parvenir avec la simple fonctionnalité de mathématiques dans cmd.exe, mais cela dépend des paramètres régionaux de la machine (si vous utilisez un format de date de JJ / MM / AAAA, il se brisera sur mon AAAA-MM-JJ), et il faudrait beaucoup de code.

Il serait sans doute beaucoup plus facile de simplement utiliser un langage de script tels que Perl, PHP ou Python pour cela.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top