[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[其他] 请高手帮忙:批处理修改系统时间

首先祝大家新年快乐、身体健康、合家欢乐!

      我希望实现如下功能:只要一运行该批处理,系统时间就自动在原时间基础上向前调1分钟。如在11:04时运行,系统时间就变成11:05,在2:50时运行就变成2:51.
      我找了个批处理,可以部分实现这个功能。

@echo off
set/a mm=%time:~3,2%
set/a hh=%time:~0,2%
set/a mm=%mm%+1
set/a a=%mm%
if %a% geq 60 set/a mm=%mm%-60 & set/a hh=%hh%+%mm%/60
:loop
if %mm% geq 60 set/a mm=%mm%-60
if %mm% lss 60 goto E
goto loop
:E
:loop2
if %hh% geq 24 set /a hh=%hh%-24
if %hh% lss 24 goto E2
goto loop
:E2
time %hh%:%mm%
pause

       但是如果时间是11:07分,运行一次时间就变回11:01、12:07运行一次就变回12:01.

      请高手帮忙!

写你那代码的人对P还不行,代码累赘太多了,要简洁~

@echo off
set min=%time:~3,2%
set hrs=%time:~0,2%
set /a min+=1
set /a hrs=hrs+min/60
set /a min%%=60
set /a hrs%%=24
time %hrs%:%min%

TOP

回复 1楼 的帖子

@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
for /f "tokens=2 delims=:" %%i in ('time /t') do (
        set /a te=%%i+1
        for /f "delims=:" %%j in ('time /t') do set te1=%%j
        time !te1!:!te!
)
pause

TOP

楼上的不行,有60不进位的情况。。。

而且说一句,%time%变量就是时间,直接用set截取好了,不用For这么麻烦。。。

TOP

是哦,谢谢指点哦^-^

TOP

defanive是高手,代码写的真是她娘的好,我也改了下
@echo off
set/a mm=%time:~3,2%
set/a hh=%time:~0,2%
set/a mm=%mm%+1
set/a a=%mm%
if %a% geq 60 set/a mm=%a%-60 & set/a hh=%hh%+%a%/60
:loop
if %mm% geq 60 set/a mm=%mm%-60
if %mm% lss 60 goto E
goto loop
:E
:loop2
if %hh% geq 24 set /a hh=%hh%-24
if %hh% lss 24 goto E2
goto loop
:E2
time %hh%:%mm%

TOP

原帖由 defanive 于 2009-1-27 14:22 发表
写你那代码的人对P还不行,代码累赘太多了,要简洁~

@echo off
set min=%time:~3,2%
set hrs=%time:~0,2%
set /a min+=1
set /a hrs=hrs+min/60
set /a min%%=60
set /a hrs%%=24
time %hrs%:%min%


set /a min%%=60
set /a hrs%%=24

高手,这两句是做什么用的啊?

TOP

set /a min%%=60
等效于
set /a min=min%%60
%%就是求余数,也就是模(Mod)
这样求出来的数就不会大于59的情况了。。。

TOP

1、与c类似
*=   +=   /=   -=  %%=
2、min/60是自然取整,和其它语言不同

TOP

返回列表