2013-03-19 234 views
0

我在製作一個程序,它有一個更改日誌。程序更改日誌必須說出版本,然後顯示它多少天前。所以應該說:CMD日期更改日誌

[2013/03/19, 2 days ago] 

我用這個代碼:

set versionreleasedate1=2013/03/17 
set /a verionday=%versionreleasedate1%-%date% 

echo Version: 1.0 BETA [2013/03/19, %verionday% days ago] 

但我知道之日起,將因CMD認爲,\符號是devide買我想要的是一個小sepricator爲日期。

所以它會像這樣工作

set /a var1=2013/03/17-%date% (todays date) 

和回聲多少天前。任何幫助將是非常感謝。

+0

'cmd'中的日期計算*非常*難看。不要對你自己做這件事。改用其他一些語言,例如VBScript或PowerShell。 – 2013-03-19 14:26:32

+0

不,我需要這個,我該怎麼做 – Adrianvdh 2013-03-19 14:34:00

回答

0

這工作對我的機器,並希望爲您的:

@echo off &setlocal 
set "versionreleasedate1=2013/03/17" 
set "versionreleasetime1=00:00:00,00" 

call :GetInternational 
call :GetSecs "%versionreleasedate1%" "%versionreleasetime1%" startsec 
call :GetSecs "%date%" "%time%" stopsec 
set /a versionday=(%stopsec%-%startsec%)/86400 
echo Version: 1.0 BETA [%versionreleasedate1%, %versionday% days ago] 
goto :eof 

:GetInternational 
:: Sets a bundle of variables by reading the registry settings 
for /f "tokens=1,2*" %%a in (' reg query "HKCU\Control Panel\International"^|find "REG_SZ" ') do set "%%a=%%c" 
goto :eof 

:GetSecs "dateIn" "timeIn" secondsOut 
:: Output: Seconds elapsed since 1th Jan. 1970 00:00:00 
:: http://www.dostips.com/forum/viewtopic.php?p=6450#p6450 
setlocal 
set "dateIn=%~1" 
for /f "tokens=2" %%i in ("%dateIn%") do set "dateIn=%%i" 
for /f "tokens=1-3 delims=%sDate%" %%a in ("%dateIn%") do (
    if %iDate%==0 set /a mm=100%%a%%100,dd=100%%b%%100,yy=10000%%c%%10000 
    if %iDate%==1 set /a dd=100%%a%%100,mm=100%%b%%100,yy=10000%%c%%10000 
    if %iDate%==2 set /a yy=10000%%a%%10000,mm=100%%b%%100,dd=100%%c%%100 
) 
for /f "tokens=1-3 delims=%sTime%%sDecimal% " %%a in ("%~2") do (
    set "hh=%%a" 
    set "nn=%%b" 
    set "ss=%%c" 
) 
if 1%hh% lss 20 set hh=0%hh% 
if "%nn:~2,1%" equ "p" if "%hh%" neq "12" (set "hh=1%hh%" &set /a hh-=88) 
if "%nn:~2,1%" equ "a" if "%hh%" equ "12" set "hh=00" 
if "%nn:~2,1%" geq "a" set "nn=%nn:~0,2%" 
set /a hh=100%hh%%%100,nn=100%nn%%%100,ss=100%ss%%%100 
set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,j=153*m+2,j=j/5+dd+y*365+y/4-y/100+y/400-2472633,j=j*86400+hh*3600+nn*60+ss 
endlocal &set "%~3=%j%" 
goto :eof 

endlocal 

%versionreleasedate1%&%versionreleasetime1%必須是喜歡%日期%&%TIME%您的機器上相同的格式!

+0

謝謝我會看看這個 – Adrianvdh 2013-03-19 18:36:08

+0

再次感謝:)但如果我有像版本2更新,然後我可以顯示它是多久以前? :)再次感謝您的幫助:) – Adrianvdh 2013-03-19 18:56:57

+0

對於更新定義新的'版本'變量並使用相同的代碼。 – Endoro 2013-03-19 19:14:41