批量:将系统日期减去前一天 [英] BATCH: Subtract the system date with one day before

查看:115
本文介绍了批量:将系统日期减去前一天的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

是否可以在今天的前一天设置一个参数?

Is it possible that I set a parameter one day before today?

所以我读出了系统时间:

So I read out the system time:

 set ARCHIV=%DATE:~0,2%%DATE:~2,2%%DATE:~4,6% 

现在输出为12.06.2014(DD.MM.YYYY)

And now the output is 12.06.2014 (DD.MM.YYYY)

我希望输出是2014年6月11日

And I want that the output is 11.06.2014

我真的不知道是否可以用一天减去输出日期. 我只找到了用另一个日期减去它的命令.

I really don't know if it's possible to subtract the output date with one day. I had found only commands to subtract it with another date.

致谢

推荐答案

尝试下面的代码删除名称比当前日期短一天的文件(格式YYYYMMDD)

Try below code for delete the file with name of one day less than current date (format YYYYMMDD)

 @echo off
 setlocal

 Call :GetDateTime Year Month Day
 set A=%Year%%Month%%Day%

 Call :SubtractDate %Year% %Month% %Day% -1 Ret

 set b=%Ret%
 @echo %b%
 @echo ###start Coping
 :: variables
 Set source=F:\
 Set destination=F:\
 set backupcmd=xcopy /s /c /d /e /h /i /r /y
 echo %drive%
 echo %destination%
 echo ### Backing up My folder...
 %backupcmd% "%source%" "%destination%\%b%"

 :SubtractDate Year Month Day <+/-Days> Ret
 ::Adapted from DosTips Functions::
 setlocal & set a=%4
 set "yy=%~1"&set "mm=%~2"&set "dd=%~3"
 set /a "yy=10000%yy% %%10000,mm=100%mm% %% 100,dd=100%dd% %% 100"
 if %yy% LSS 100 set /a yy+=2000 &rem Adds 2000 to two digit years
 set /a JD=dd-32075+1461*(yy+4800+(mm-14)/12)/4+367*(mm-2-(mm-14)/12*12)/12-3*((yy+4900+(mm-14)/12)/100)/4
 if %a:~0,1% equ + (set /a JD=%JD%+%a:~1%) else set /a JD=%JD%-%a:~1%
 set /a L= %JD%+68569,     N= 4*L/146097, L= L-(146097*N+3)/4, I= 4000*(L+1)/1461001
 set /a L= L-1461*I/4+31, J= 80*L/2447,  K= L-2447*J/80,      L= J/11
 set /a J= J+2-12*L,      I= 100*(N-49)+I+L
 set /a YYYY= I, MM=100+J, DD=100+K
 set MM=%MM:~-2% & set DD=%DD:~-2%
 set ret=%YYYY: =%%MM: =%%DD: =%
 endlocal & set %~5=%ret%
 exit /b

 :GetDateTime Year Month Day Hour Minute Second
 @echo off & setlocal
 for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"
 set "YY=%dt:~2,2%" & set "YYYY=%dt:~0,4%" & set "MM=%dt:~4,2%" & set "DD=%dt:~6,2%"
 set "HH=%dt:~8,2%" & set "Min=%dt:~10,2%" & set "Sec=%dt:~12,2%"
 ( ENDLOCAL
    IF "%~1" NEQ "" set "%~1=%YYYY%" 
    IF "%~2" NEQ "" set "%~2=%MM%" 
    IF "%~3" NEQ "" set "%~3=%DD%"
    IF "%~4" NEQ "" set "%~4=%HH%" 
    IF "%~5" NEQ "" set "%~5=%Min%"
    IF "%~6" NEQ "" set "%~6=%Sec%"
 )
 exit /b

这篇关于批量:将系统日期减去前一天的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆