使用下面的代码就可以得到前一天的日期:
@echo offrem 计算指定天数之前的日期
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中当前系统时间和日期等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)