CMD日期更改日志

CMD日期更改日志,cmd,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认为

我正在制作一个程序,它有一个更改日志。程序更改日志必须显示版本,然后显示它是多少天前的版本。所以应该说:

[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 buy,我想要一个小的擦写器作为日期

所以它是这样工作的

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

和多少天前的回声。任何帮助都将非常感谢。

这适用于我的机器,希望也适用于您的机器:

@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%必须采用与您机器上的%date%和%time%相同的格式

cmd
中的日期计算非常难看。不要这样对自己。请改用其他语言,例如VBScript或PowerShell。不,我需要这个怎么做谢谢,我会看一看这个谢谢:)但是如果我有一个像版本2这样的更新,然后我可以显示它是多久以前的吗?:)再次感谢您的帮助:)对于更新,请定义新的
版本
变量并使用相同的代码。一个问题。。。设置时间的位置:设置“versionreleasetime1=00:00:00,00”我如何让它表示1天前的12:00:00,00 Am(午夜),因为这不起作用这取决于您机器的本地设置。试着用
echo%time%
解决这个问题。