批处理文件如何调用昨天的日期

2024-12-02 13:51:20
推荐回答(5个)
回答1:

你写的问题看得有点范迷糊,不好写出完整的代码。
下面的是获得昨天日期的批处理,获得的昨天日期格式与楼主帖出来的一样。
自己略微修改一下,把变量值%d%引用到自己的批处理就可以解决你的问题了。

@echo off&color a
setlocal enabledelayedexpansion
set bkdays=1
::设置当前日期向后推算的天数,set bkdays=1 就是昨天了
mshta vbscript:createobject("scripting.filesystemobject").opentextfile("temp",2,true).writeline(dateadd("d",-%bkdays%,"%date:~0,10%"))(window.close)
for /f "tokens=1-3 delims=/ " %%i in (temp) do (
set d=%%i&set d=!d:~2!
if %%j lss 10 (set d=0%%j!d!) else set d=%%j!d!
if %%k lss 10 (set d=0%%k!d!) else set d=%%k!d!
)
del temp /a/f
echo 日期是:%d%
pause

回答2:

如果是今天的日期是比较好弄的,如果是昨天的日期,就有点麻烦。

因为批处理不提供日期加减的运算。
当然也可以自己日期加减的函数,但是比较麻烦。
如果真的想要的话, 我找个时间帮你写一写。

=======================
@echo off
setlocal enabledelayedexpansion
set days[01]=31
set days[02]=28
set days[03]=31
set days[04]=30
set days[05]=31
set days[06]=30
set days[07]=31
set days[08]=31
set days[09]=30
set days[10]=31
set days[11]=30
set days[12]=31

REM 下面的顺序是日月年
set day=%date:~8,2%
set mon=%date:~5,2%
set yea=%date:~2,2%
echo %day%%mon%%yea%

REM 计算昨天的日期
set /a Yday=day-1

if %Yday%==0 (
set /a Ymon=mon-1
if !Ymon!==0 (
set Ymon=12
set /a Yyea=yea-1
) else (
set Yyea=!yea!
)

REM 获得Ymon月的天数
for /l %%a in (!Ymon!,1,!Ymon!) do (
if %%a LSS 10 (
set LastDays=!days[0%%a]!
) else (
set LastDays=!days[%%a]!
)
)

echo LastDays=!LastDays!
if "!Ymon!"=="02" (
echo year=!yea!
set /a temp=yea%%400
echo temp=!temp!
if !temp!==0 (
set /a LastDays=LastDays+1
) else (
set /a temp=yea%%100
if not !temp!==0 (
set /a temp=yea%%4
if !temp!==0 set /a LastDays=LastDays+1
)
)
)
set Yday=!LastDays!
echo Yday=!Yday!
) else (
set /a Ymon=!mon!+1-1
set /a Yyea=!yea!+1-1
)

if !Yday! LSS 10 (
set yesterday=0!Yday!
) else (
set yesterday=!Yday!
)

if !Ymon! LSS 10 (
set yesterday=!yesterday!0!Ymon!
) else (
set yesterday=!yesterday!!Ymon!
)

if !Yyea! LSS 10 (
set yesterday=!yesterday!0!Yea!
) else (
set yesterday=!yesterday!!Yea!
)

echo yesterday=!yesterday!
REM 上述代码考虑的比较细致,比如润年二月份天数等问题,所以比较复杂一些。
REM 如果下面显示的命令无误的话,请将echo改成xcopy
echo c:\MICROS\opera\export\OPERA\h7042\audit\!yesterday! /e e:\H7042\Forum\IT\FOfile\!yesterday!\

回答3:

获得昨天日期的批处理:
把变量值%d%引用到自己的批处理。

@echo off&color a
setlocal enabledelayedexpansion
set bkdays=1
::设置当前日期向后推算的天数,set bkdays=1 就是昨天了
mshta vbscript:createobject("scripting.filesystemobject").opentextfile("temp",2,true).writeline(dateadd("d",-%bkdays%,"%date:~0,10%"))(window.close)
for /f "tokens=1-3 delims=/ " %%i in (temp) do (
set d=%%i&set d=!d:~2!
if %%j lss 10 (set d=0%%j!d!) else set d=%%j!d!
if %%k lss 10 (set d=0%%k!d!) else set d=%%k!d!
)
del temp /a/f
echo 日期是:%d%
pause

回答4:

@echo off
echo wscript.echo date()-1>dt.vbs
for /f "tokens=1-3 delims=-" %%a in ('cscript /nologo dt.vbs')do (
set d3=%%a&call set d3=%%d3:~-2%%
set d2=0%%b&call set d2=%%d2:~-2%%
set d1=0%%c&call set d1=%%d1:~-2%%
call set d=%%d1%%%%d2%%%%d3%%&del dt.vbs)
echo 昨天是: %d%
pause

回答5:

@echo off
echo wscript.echo dateadd("d",1,now)>d.vbs
for /f "tokens=2,3 delims=-" %%i in ('cscript/nologo d.vbs') do echo %%i%%j
pause