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

代码:xcopyc:\MICROS\opera\export\OPERA\h7042\audit\030211/ee:\H7042\Forum\IT\FOfile\030... 代码:xcopy c:\MICROS\opera\export\OPERA\h7042\audit\030211 /e e:\H7042\Forum\IT\FOfile\030211\
此批处理文件每天5:00am执行,将opera夜审生成的文件拷贝到另一个目录,030211这是一个以日期命名的文件夹,比如今天是2011-2-4,夜审时会生成030211这样的文件夹,请问有办法通过命令自动将030211这段数字修改成昨天的日期吗?而不用通过手工修改。
展开
 我来答
yx6070
2011-02-04 · TA获得超过1.5万个赞
知道大有可为答主
回答量:5827
采纳率:0%
帮助的人:0
展开全部
你写的问题看得有点范迷糊,不好写出完整的代码。
下面的是获得昨天日期的批处理,获得的昨天日期格式与楼主帖出来的一样。
自己略微修改一下,把变量值%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
wacs5
2011-02-06 · TA获得超过1.6万个赞
知道大有可为答主
回答量:3724
采纳率:82%
帮助的人:2808万
展开全部
如果是今天的日期是比较好弄的,如果是昨天的日期,就有点麻烦。

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

=======================
@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!\
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
a1012144015
2016-01-06 · TA获得超过6415个赞
知道大有可为答主
回答量:9038
采纳率:40%
帮助的人:1350万
展开全部
获得昨天日期的批处理:
把变量值%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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
314ccp
2011-02-04 · TA获得超过5625个赞
知道大有可为答主
回答量:1497
采纳率:0%
帮助的人:2154万
展开全部
@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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
淡淡的雅兴
2015-12-12 · TA获得超过1.6万个赞
知道大有可为答主
回答量:4172
采纳率:86%
帮助的人:472万
展开全部
@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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式