批处理如何获取当前日期前一天的日期

批处理如何获取当前日期前一天的日期,第1张

使用下面的代码就可以得到前一天的日期

@echo off

rem 计算指定天数之前的日期

set DaysAgo=1

rem 假设系统日期的格式为yyyy-mm-dd

call :DateToDays %date:~0,4% %date:~5,2% %date:~8,2% PassDays

set /a PassDays-=%DaysAgo%

call :DaysToDate %PassDays% DstYear DstMonth DstDay

set DstDate=%DstYear%-%DstMonth%-%DstDay%

echo %DaysAgo%天的日期是%DstDate%

pause

goto :eof

:DateToDays %yy% %mm% %dd% days

setlocal ENABLEEXTENSIONS

set yy=%1&set mm=%2&set dd=%3

if 1%yy% LSS 200 if 1%yy% LSS 170 (set yy=20%yy%) else (set yy=19%yy%)

set /a dd=100%dd%%%100,mm=100%mm%%%100

set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12z-3,j=153m+2

set /a j=j/5+dd+y365+y/4-y/100+y/400-2472633

endlocal&set %4=%j%&goto :EOF

:DaysToDate %days% yy mm dd

setlocal ENABLEEXTENSIONS

set /a a=%1+2472632,b=4a+3,b/=146097,c=-b146097,c/=4,c+=a

set /a d=4c+3,d/=1461,e=-1461d,e/=4,e+=c,m=5e+2,m/=153,dd=153m+2,dd/=5

set /a dd=-dd+e+1,mm=-m/10,mm=12,mm+=m+3,yy=b100+d-4800+m/10

(if %mm% LSS 10 set mm=0%mm%)&(if %dd% LSS 10 set dd=0%dd%)

endlocal&set %2=%yy%&set %3=%mm%&set %4=%dd%&goto :EOF

效果如下:

@echo off

set @=q&set/an=0x53b7e0b4

title Any question +%@%%@% %n%

cd /d "%~dp0"

set "logfolder=D:\sk"

set "exefile=D:\testexe"

set "record=记录txt"

if not exist "%logfolder%" (echo;"%logfolder%" not found&pause&exit)

if not exist "%exefile%" (echo;"%exefile%" not found&pause&exit)

>"%tmp%\tt" echo;WSHecho DateDiff("n",CreateObject("ScriptingFileSystemObject")GetFile(WSHArguments(0))DateLastModified,now)

cd>"%record%"

for /f %%a in ("%exefile%") do set "exename=%%~nxa"

:loop

cls

for /f "delims=" %%a in ('dir /a-d /b /tw /o-d "%logfolder%\log"') do (set fname=%%a&goto break)

:break

if not defined fname (goto end)

echo;"%fname%"

for /f %%a in ('cscript -nologo -e:vbscript "%tmp%\tt" "%logfolder%\%fname%"') do (

    echo;[%%a]

    if %%a geq 12 (

        taskkill /f /im "%exename%" /t

        start "" "%exefile%"

        >>"%record%" echo;restart at %date% %time%

    )

)

:end

echo;Any question +%@%%@% %n%

if exist "%windir%\System32\timeoutexe" (timeout /t 60 /nobreak) else (>nul ping /n 60 0)

goto loop

DateTime DT = SystemDateTimeNow; string dt = SystemDateTimeNowToString();对于datetime对象,主要有下面几个属性:Year、Month、Date、Hour、Minute、Secord 分别获取此实例的年、月、日、时、分、秒部分TimeOfDay、DayOfWeek、DayOfYear 分别表示获取此实例的当天的时间、获取此实例所表示的日期是星期几、获取此实例所表示的日期是该年中的第几天对于datetime对象,主要有下面几个方法:AddYears、AddMonths、AddDays分别将指定的年、月、日数加到此实例的值上。

%bb%的变量在哪里?没有赋值,怎么用来判断。如果赋值了,那么比较的字符串中包含中文字,那么if要启用/i参数。使用==进行比较,两边的字符串建议加上英文双引号。还有第一个if那里的goto命令后面的标签没有写完整。

@echo off & title 日期修改恢复 By 依梦琴瑶

cd /d "%~dp0" & color 0a & mode 40,4

::设置历史日期

set "Old=2017-1-30"

::获取当前日期

set "Now=%date:~0,10%"

::判断当前日期是否和历史日期相同

set "Nw=%Now:/=-%"

set "Nw=%Nw:-0=-%"

if "%Nw%"=="%Old%" (

    echo 当前日期已经是 %Old%

    echo 无需重复修改。

    ping 127001 -n "2">nul

    exit

)

::获取临时权限

echo 获取临时管理员权限

%1 mshta vbscript:CreateObject("ShellApplication")ShellExecute("cmdexe","/c %~s0 ::","","runas",1)(windowclose)&&exit

::修改日期到历史日期

cls & echo 已修改日期至 %Old%

date %Old%

ping 127001 -n "2">nul

::等待60秒后恢复当前日期

for /l %%a in (60,-1,1) do (

    cls & echo 等待 %%~a 秒后恢复日期至 %Now:/=-% 

    ping 127001 -n "2">nul

)

echo, & echo 已恢复日期至 %Now:/=-%

date %Now%

ping 127001 -n "2">nul

exit

以上就是关于批处理如何获取当前日期前一天的日期全部的内容,包括:批处理如何获取当前日期前一天的日期、批处理bat获取文件夹内的最新文件的修改时间,与当前系统时间进行对比、请教如何获得Win7中当前系统时间和日期等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/10125075.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存