批处理文件如何调用昨天的日期
代码: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这段数字修改成昨天的日期吗?而不用通过手工修改。 展开
此批处理文件每天5:00am执行,将opera夜审生成的文件拷贝到另一个目录,030211这是一个以日期命名的文件夹,比如今天是2011-2-4,夜审时会生成030211这样的文件夹,请问有办法通过命令自动将030211这段数字修改成昨天的日期吗?而不用通过手工修改。 展开
展开全部
你写的问题看得有点范迷糊,不好写出完整的代码。
下面的是获得昨天日期的批处理,获得的昨天日期格式与楼主帖出来的一样。
自己略微修改一下,把变量值%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
下面的是获得昨天日期的批处理,获得的昨天日期格式与楼主帖出来的一样。
自己略微修改一下,把变量值%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
展开全部
如果是今天的日期是比较好弄的,如果是昨天的日期,就有点麻烦。
因为批处理不提供日期加减的运算。
当然也可以自己日期加减的函数,但是比较麻烦。
如果真的想要的话, 我找个时间帮你写一写。
=======================
@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!\
因为批处理不提供日期加减的运算。
当然也可以自己日期加减的函数,但是比较麻烦。
如果真的想要的话, 我找个时间帮你写一写。
=======================
@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!\
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
获得昨天日期的批处理:
把变量值%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
把变量值%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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
@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
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
@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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询