2009-07-20 9 views
0

Ich will nur herausfinden,KMD: Wie viele linke

Wie kann eine Batch-Datei (CMD) mir sagen, wie viele Tage ich von jedem Datum links ... ???

wie:

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% 

Dank!

Antwort

1

Hier Eine einfache Lösung in VBScript:

Sie können dieses Skript aus Ihrer Batchdatei aufrufen und das Zieldatum li angeben ke this:

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

Danke, ich denke, das ist der beste und sicherste Zeitcode, den ich bis jetzt gesehen habe! –

1

Es könnte möglich sein, dass in cmd.exe mit der einfachen mathematischen Funktionalität zu erreichen, aber es würde auf den regionalen Einstellungen der Maschine ab (wenn Sie ein Datumsformat TT/MM/YYYY verwenden, wird es brechen auf mein YYYY-MM-DD), und es würde eine Menge Code benötigen.

Es wäre wahrscheinlich viel einfacher, dafür eine Skriptsprache wie Perl, PHP oder Python zu verwenden.

+0

Nun, ich werde das beheben, aber können Sie mir den Code dafür geben. –

3

... okay, da der Fragesteller will, dass ich für ihn die ganze Arbeit tun, hier ist das Skript:

@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. 

Zum Vergleich wurde die gleiche Sache in 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