Board logo

标题: [日期时间] 批处理怎么在获取的时间上加上几秒? [打印本页]

作者: gd6570    时间: 2015-2-4 19:13     标题: 批处理怎么在获取的时间上加上几秒?

不是延迟执行,是在获取的时间上加上几秒,想用AT命令在指定时间(执行后的几秒钟)执行一个程序,at time

就是时间相加
作者: DAIC    时间: 2015-2-4 21:09

这里有函数库和实际例子,可以参考一下:
http://bbs.bathome.net/thread-3056-1-1.html
作者: pcl_test    时间: 2015-2-4 21:17

回复 1# gd6570
  1. @echo off
  2. set /p n=请输入要累加的秒数:
  3. >gettime.vbs echo dim t,h,m,s
  4. >>gettime.vbs echo t=Hour(Now)*3600+Minute(Now)*60+Second(Now)+%n%
  5. >>gettime.vbs echo h=t\3600
  6. >>gettime.vbs echo m=(t mod 3600)\60
  7. >>gettime.vbs echo s=(t mod 3600) mod 60
  8. >>gettime.vbs echo if (h^<10) then h="0"^&h
  9. >>gettime.vbs echo if (m^<10) then m="0"^&m
  10. >>gettime.vbs echo if (s^<10) then s="0"^&s
  11. >>gettime.vbs echo wscript.echo h^&":"^&m^&":"^&s
  12. for /f %%a in ('cscript /nologo gettime.vbs') do (set "gtime=%%a")
  13. del gettime.vbs /f /q
  14. echo 当前时间为%time:~0,8%
  15. echo 累加%n%秒后的时间为%gtime%
  16. pause
复制代码

作者: CrLf    时间: 2015-2-4 21:46

来个当前时间加 100 秒的,话说写这么长和纯批比完全没优势了的...
  1. <!-- : www.bathome.net
  2. @echo off
  3. for /f "delims=" %%a in ('echo %time:~,8% ^| mshta "file://%~0"') do echo %%a
  4. pause&exit
  5. -->
  6. <script language=vbs>
  7. Set fso = CreateObject("Scripting.FileSystemObject")
  8. t = fso.GetStandardStream(0).ReadAll
  9. t = DateAdd("s",100,CDate(t))
  10. t = Hour(t) & ":" & Right("0" & Minute(t), 2) & ":" & Right("0" & Second(t), 2)
  11. fso.GetStandardStream(1).Write t
  12. close
  13. </script>
复制代码
有更简便的办法,但现在还没完工
作者: apang    时间: 2015-2-4 22:30

  1. @echo off
  2. set n=5
  3. set t=%time: =0%
  4. set /a s=n+(1%t:~,2%-100)*3600+(1%t:~3,2%-100)*60+1%t:~6,2%-100
  5. set /a hh=s/3600%%24+100,mm=s%%3600/60+100,ss=s%%60+100
  6. set "newTime=%hh:~1%:%mm:~1%:%ss:~1%"
  7. echo,%newTime%
  8. pause
复制代码

作者: CrLf    时间: 2015-2-4 23:56

推广一下,powershell 可以这样:
  1. (Get-Date).AddSeconds(1000) | Get-Date -Format 'hh:mm:ss'
复制代码

作者: terse    时间: 2015-2-5 01:45

  1. @if(0)==(0) echo off
  2. CScript -NoLogo -E:JScript %0
  3. pause & exit
  4. @end
  5. var t = new Date(new Date().getTime()+5000);
  6. var reg = /((\d{1,2}:){2}\d{1,2})/g;
  7. t.toLocaleString().replace(reg, function(a,b){WSH.echo(b)});
复制代码

作者: 凡凡之呗    时间: 2015-2-7 15:10

下面的代码是越来越简便,他们既然说了,我就不用了吧,其实你为什么不在at命令后面直接修改时间呢
作者: gd6570    时间: 2015-2-8 12:32

回复 5# apang


    如果不精确到秒,以分钟为单位相加怎么弄?代码会不会简单些?
作者: 飛雪    时间: 2015-2-27 07:56

出現秒數也太細膩了吧?




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2