如何在批处理文件中获取昨天的日期

use*_*125 9 windows date batch-file

我知道如何在Windows 7中获取今天的日期.这是我正在使用的命令:

%DATE:~6,4%%DATE:~3,2%%DATE:~0,2%
Run Code Online (Sandbox Code Playgroud)

但我想昨天得到,我不知道怎么做.

pax*_*blo 11

如果你只限于公正 cmd.exe,那么其他解决方案,尽管它们的大小,可能会和你一样好.但是,现代Windows(例如您的Win7)附带了许多其他工具,可以更轻松地完成工作.

只需创建一个VBScript yester.vbs脚本,如下所示:

d = date() - 1
wscript.echo year(d) * 10000 + month(d) * 100 + day(d)
Run Code Online (Sandbox Code Playgroud)

然后你可以cmd用你的脚本调用它:

for /f %%a in ('cscript //nologo yester.vbs') do set yesterday=%%a
Run Code Online (Sandbox Code Playgroud)

并且yesterday将在表单中创建变量,yyyymmdd以便您根据需要进行操作.

  • **注释2:**如果你想直接在`cmd`终端中执行`for /f %%a in ('cscript //nologo yester.vbs') do set Tuesday=%%a`,你应该替换将 `%%` 替换为 `%`,否则您将收到以下错误消息:`%%A is irreversible at this time`。请参阅此/sf/ask/651809371/ (2认同)

小智 8

找到一个脚本,即使年份或月份更改Dos昨天批次,也可以确保您获得前一天.

@echo off

set yyyy=

set $tok=1-3
for /f "tokens=1 delims=.:/-, " %%u in ('date /t') do set $d1=%%u
if "%$d1:~0,1%" GTR "9" set $tok=2-4
for /f "tokens=%$tok% delims=.:/-, " %%u in ('date /t') do (
for /f "skip=1 tokens=2-4 delims=/-,()." %%x in ('echo.^|date') do (
set %%x=%%u
set %%y=%%v
set %%z=%%w
set $d1=
set $tok=))

if "%yyyy%"=="" set yyyy=%yy%
if /I %yyyy% LSS 100 set /A yyyy=2000 + 1%yyyy% - 100

set CurDate=%mm%/%dd%/%yyyy%
set dayCnt=%1

if "%dayCnt%"=="" set dayCnt=1

REM Substract your days here
set /A dd=1%dd% - 100 - %dayCnt%
set /A mm=1%mm% - 100

:CHKDAY
if /I %dd% GTR 0 goto DONE
set /A mm=%mm% - 1
if /I %mm% GTR 0 goto ADJUSTDAY
set /A mm=12
set /A yyyy=%yyyy% - 1

:ADJUSTDAY
if %mm%==1 goto SET31
if %mm%==2 goto LEAPCHK
if %mm%==3 goto SET31
if %mm%==4 goto SET30
if %mm%==5 goto SET31
if %mm%==6 goto SET30
if %mm%==7 goto SET31
if %mm%==8 goto SET31
if %mm%==9 goto SET30
if %mm%==10 goto SET31
if %mm%==11 goto SET30
REM ** Month 12 falls through

:SET31
set /A dd=31 + %dd%
goto CHKDAY

:SET30
set /A dd=30 + %dd%
goto CHKDAY

:LEAPCHK
set /A tt=%yyyy% %% 4
if not %tt%==0 goto SET28
set /A tt=%yyyy% %% 100
if not %tt%==0 goto SET29
set /A tt=%yyyy% %% 400
if %tt%==0 goto SET29

:SET28
set /A dd=28 + %dd%
goto CHKDAY

:SET29
set /A dd=29 + %dd%
goto CHKDAY

:DONE
if /I %mm% LSS 10 set mm=0%mm%
if /I %dd% LSS 10 set dd=0%dd%

REM Set IIS and AWS date variables
set IISDT=%yyyy:~2,2%%mm%%dd%
set AWSDT=%yyyy%-%mm%-%dd%
Run Code Online (Sandbox Code Playgroud)