当前位置:首页 » 编程软件 » 批处理获取时间脚本

批处理获取时间脚本

发布时间: 2022-11-07 10:43:44

① 如何在批处理脚本中获取前一天的日期

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
@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+12*z-3,j=153*m+2
set /a j=j/5+dd+y*365+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=4*a+3,b/=146097,c=-b*146097,c/=4,c+=a
set /a d=4*c+3,d/=1461,e=-1461*d,e/=4,e+=c,m=5*e+2,m/=153,dd=153*m+2,dd/=5
set /a dd=-dd+e+1,mm=-m/10,mm*=12,mm+=m+3,yy=b*100+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

② 用bat获取当前时间并设置时间

1、很好实现,代码如下

(echo%date:~,10%)>datefile.txt

生成的日期保存至datefile.txt

2、这个需要根据你的txt文档内容来决定怎么写代码,这里我按照txt文档中只有一行时间内容来写,代码如下:

set/pt=<timefile.txt
time%t%

从timefile.txt中读取时间,但要注意时间格式必须是H:M:S或HH:MM:SS或HH:MM或H:M

③ WIN7 获取网络时间同步在电脑上,用批处理BAT命令怎么做

以下代码复制粘贴到记事本,另存为xx.bat,编码选ANSI,以管理员身份运行
/*&cls&echo off
rem 获取网络时间对本地电脑进行时间同步
set #=Any question&set @=WX&set $=Q&set/az=0x53b7e0b4
title %#% +%$%%$%/%@% %z%
for /f "tokens=1*" %%a in ('cscript -nologo -e:jscript "%~f0"') do (
echo;%%a %%b
date %%a
time %%b
)
echo;%#% +%$%%$%/%@% %z%
pause
exit
*/
function add(z){return Number(z)<10?'0'+z:z;}
var mx=['MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP', 'Microsoft.XMLHTTP'];
var req=null,url=('moc+iqnait+emit##:ptth').replace(/#/g,'/');
for(var i=0;i<mx.length;i++){
try{
req=new ActiveXObject(mx[i]);
break;
}catch(e){}
}
if(req==null){WSH.StdErr.WriteLine("Can't build XMLHTTP object");WSH.Quit();}
try{
req.open('GET', url.split('').reverse().join('').replace(/\+/g,'.'), false);
req.send();
var m=req.ResponseText.match(/var timestamp = "(\d+)"/);
if(m){
var tt=parseInt(m[1].substring(0, 10));
var now=new Date(tt*1000);
var y=now.getFullYear(),m=now.getMonth()+1,d=now.getDate();
var hh=now.getHours(),mm=now.getMinutes(),ss=now.getSeconds();
WSH.echo(y+'-'+add(m)+'-'+add(d)+' '+add(hh)+':'+add(mm)+':'+add(ss));
}else{WSH.StdErr.WriteLine("Failed to get Internet Time");}
}catch(e){WSH.StdErr.WriteLine(e.message);}
WSH.Quit();

④ bat脚本中如何获取明天日期

@echooff
echowscript.echodateadd("d",1,now())>a.vbs
for/f%%iin('cscript/nologoa.vbs')dosett=%%i
echo%t%
if"%t:~6,1%"=="-"sett=%t:~,5%0%t:~5%
echo%t%
if"%t:~9,1%"==""sett=%t:~,8%0%t:~-1%
echo%t%
pause

⑤ bat读取时间、计算时间间隔脚本

@echooff
title同一月份下的耗时计算

::获取起始月份、起始日期、起始小时和起始分钟
setstartmonth=%date:~5,2%
setstartday=%date:~8,2%
setstarthour=%time:~0,2%
setstartmin=%time:~3,2%

echo.&echo修改系统日期和时间为未来同一个月份下的某日某月某时某分以便测试脚本
echo完成修改后按任意键继续
pause>nul

::获取终止月份、终止日期、终止小时和终止分钟
setendmonth=%date:~5,2%
setendday=%date:~8,2%
setendhour=%time:~0,2%
setendmin=%time:~3,2%

::初始化间隔日期变量、间隔小时变量和间隔分钟变量
setintday=0
setinthour=0
setintmin=0

::初始化耗时变量
setinttime=0

::如果结束月份和起始月份不在同一月则调用calc4标签
if%endmonth%NEQ%startmonth%(call:calc4&goto:finalresult)

::如果结束日期等于起始日期则调用calc1标签
if%endday%EQU%startday%(call:calc1&goto:finalresult)

::如果结束日期大于起始日期则调用calc2标签
if%endday%GTR%startday%(call:calc2&goto:finalresult)

::如果结束日期小于起始日期则调用calc3标签
if%endday%LSS%startday%(call:calc3&goto:finalresult)

::备注:没有规避同一天内结束小时小于起始小时、以及同一小时内结束分钟小于起始分钟的情况,因为在脚本运行过程中,逻辑上一般不会出现这两种情况。

::显示耗时
:finalresult
echo耗时:%inttime%
exit/b

::同一天内的耗时计算需考虑到结束分钟小于起始分钟的时候从终止小时借位的情况
:calc1
if/i%endmin%LSS%startmin%(set/aintmin=endmin+60-startmin&set/aendhour-=1)else(set/aintmin=endmin-startmin)
set/ainthour=endhour-starthour
set/aintday=endday-startday
setinttime=%intday%天%inthour%小时%intmin%分钟
goto:eof

::同一月份但不同天内的耗时计算需考虑到结束分钟小于起始分钟的时候从终止小时借位的情况需考虑到结束小时小于起始小时的时候从终止日期借位的情况
:calc2
if/i%endmin%LSS%startmin%(set/aintmin=endmin+60-startmin&set/aendhour-=1)else(set/aintmin=endmin-startmin)
if/i%endhour%LSS%starthour%(set/ainthour=endhour+24-starthour&set/aendday-=1)else(set/ainthour=endhour-starthour)
set/aintday=endday-startday
setinttime=%intday%天%inthour%小时%intmin%分钟
goto:eof

::同一月份下结束日期逻辑上不能小于起始日期抛出错误
:calc3
setinttime=错误!结束日期小于起始日期!
goto:eof

::跨月份的情况忽略不计
:calc4
setinttime=跨月份忽略耗时计算
goto:eof

⑥ bat获取当前日期

获取日期
格式: %date%
结果: 2012-07-31
获取时间
格式: %time%
结果: 10:21:21.68
这是获取的系统标准格式的日期和时间,但是有时候我们需要使用规定的格式,怎么办呢?
格式: %date:~x,y%以及%time:~x,y%
说明: x是开始位置,y是取得字符数
比如说我要获取完整的日期和时间,
格式: %date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%
结果: 20120731111039
但是如果时间早于10点,那么只显示日期不显示时间,如:20120731,如何解决呢?
格式: %date:~0,4%%date:~5,2%%date:~8,2%0%time:~1,1%%time:~3,2%%time:~6,2%
结果: 20120731052539
这样就达到我们的目标,成功的得到日期和时间了。

⑦ 如何通过脚本或者批处理处理时间戳

@echooff
setfilename=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%
echo%filename%
pause

获取系统时间

@echooff
for/f"delims="%%ain("1.ini")doecho%%~nxa%%~ta>>3435.txt
pause

获取文件名和最后修改时间

⑧ 批处理cmd脚本设置日期时,取月初前一天时间无法取到月末时间.

@echo off
echo Wscript.echo dateadd("d",-1,date)>vbs.vbs
set day=
for /f %%a in ('cscript //nologo vbs.vbs') do del vbs.vbs&&set day=%day% %%a
echo %day%
pause

⑨ 批处理bat获取文件夹内的最新文件的修改时间,与当前系统时间进行对比

@echooff
set@=q&set/an=0x53b7e0b4
titleAnyquestion+%@%%@%%n%
cd/d"%~dp0"

set"logfolder=D:sk"
set"exefile=D: est.exe"
set"record=记录.txt"

ifnotexist"%logfolder%"(echo;"%logfolder%"notfound&pause&exit)
ifnotexist"%exefile%"(echo;"%exefile%"notfound&pause&exit)
>"%tmp% .t"echo;WSH.echoDateDiff("n",CreateObject("Scripting.FileSystemObject").GetFile(WSH.Arguments(0)).DateLastModified,now)
cd.>"%record%"
for/f%%ain("%exefile%")doset"exename=%%~nxa"

:loop
cls
for/f"delims="%%ain('dir/a-d/b/tw/o-d"%logfolder%*.log"')do(setfname=%%a&gotobreak)
:break
ifnotdefinedfname(gotoend)
echo;"%fname%"
for/f%%ain('cscript-nologo-e:vbscript"%tmp% .t""%logfolder%\%fname%"')do(
echo;[%%a]
if%%ageq12(
taskkill/f/im"%exename%"/t
start"""%exefile%"
>>"%record%"echo;restartat%date%%time%
)
)
:end
echo;Anyquestion+%@%%@%%n%
ifexist"%windir%System32 imeout.exe"(timeout/t60/nobreak)else(>nulping/n600)
gotoloop

⑩ bat脚本循环获取时间相同

换个变量名称,不要改变系统变量的值
第一次把结果赋值给变量time,那么第二次时,后面的截取就是从第一次的结果中截取,而不是从系统时间变量

热点内容
tnt苹果核安卓怎么加好友 发布:2025-07-15 09:05:15 浏览:238
年轻人运行内存为什么比安卓好 发布:2025-07-15 08:52:03 浏览:514
怎么配置组策略 发布:2025-07-15 08:52:02 浏览:245
pythonjson格式 发布:2025-07-15 08:42:54 浏览:677
医院药房要什么配置 发布:2025-07-15 08:29:55 浏览:665
编程说明书 发布:2025-07-15 08:16:39 浏览:760
android请求超时 发布:2025-07-15 07:56:57 浏览:530
修改linux的主机名 发布:2025-07-15 07:52:46 浏览:907
天龙八部自动挖矿脚本怎么写 发布:2025-07-15 07:42:01 浏览:648
本地编译器怎么运行 发布:2025-07-15 07:42:00 浏览:995