标题: [日期时间] [已解决]win7下批处理如何实现每50秒返回时间来固定时间? 以及关闭文件后自动校时 [打印本页]
作者: hao009 时间: 2013-11-11 23:23 标题: [已解决]win7下批处理如何实现每50秒返回时间来固定时间? 以及关闭文件后自动校时
本帖最后由 hao009 于 2013-11-13 11:13 编辑
- @echo off
- :a
- time 15:30
- ping -n 50 127.0.0.1>nu
- goto a
- exit
复制代码
在XP下这么做可以固定系统时间在某一分钟,但win7下不行,提示错误代码,该怎么写?
我想这么做,先固定时间在某一分钟,每50秒自动调回时间,关闭bat窗口时自动校时,返回北京时间。
或者固定时间在某一分钟,启动一个exe文件,每50秒自动调回时间,退出软件自动校时,或关闭bat窗口时自动校时,返回北京时间。
有没有朋友可以写一下代码? 谢谢。
作者: foxJL 时间: 2013-11-12 07:55
win7下有自带timeout更好
作者: hao009 时间: 2013-11-12 09:58
本帖最后由 hao009 于 2013-11-12 10:28 编辑
:a
date 2013-11-11
time 9:50
TIMEOUT /T 50
goto a
是这样写吗?
XP下可以用,我把timeout拷贝到c:\windows\system32下了,但win7下把bat文件和time.exe放一个目录下运行才行.
怎么样再加上启动文件命令,启动这个文件在这个循环范围内,并退出这个文件时自动校时。
作者: foxJL 时间: 2013-11-12 10:38
你在XP下关闭CMD窗口后是怎么自动触发自动校时的?
作者: hao009 时间: 2013-11-12 11:01
本帖最后由 hao009 于 2013-11-13 11:10 编辑
正研究这个问题呢,我计划在bat文件结尾加上自动校时代码,现在是可以
time 10:10
start 1.exe
a:
time 10:10
TIMEOUT /T 50
goto a
这样来先设置指定时间,再启动文件,再设置时间固定在某一分钟,现在是不清楚怎么让软件关闭时bat文件进行下一步,就是网络校时代码,而不是继续固定时间,每50秒循环一次。
作者: foxJL 时间: 2013-11-12 12:12
如果用批处理至少要用开两个窗口
1.bat用start /wait调用2.bat,关闭2.bat后1.bat继续运行.
作者: hao009 时间: 2013-11-12 12:26 标题: ,
本帖最后由 hao009 于 2013-11-13 11:11 编辑
那wait怎么使用?
time 10:10
start 1.exe
a:
time 10:10
TIMEOUT /T 50
goto a
wait 2.bat
这样好像不行,不能在关闭1.exe后自动进行2.bat,
我这是重复运行timeout,让时间固定在一分钟内,不是延迟时间,所以wait是不是不行吧
作者: DAIC 时间: 2013-11-12 13:21
回复 7# hao009
他说的不是 wait 命令,而是 start 命令的 /wait 选项。
作者: foxJL 时间: 2013-11-12 13:46
- @echo off
- (echo,time 10:10
- echo,:a
- echo,time 10:10
- echo,TIMEOUT /T 50
- echo,goto a)>2.cmd
-
- echo,N|start /WAIT "" "2.cmd"
- cls
- echo,继续运行的代码...
- pause
复制代码
关于网络校时,可以看看这个贴子。
http://www.bathome.net/viewthrea ... hlight=%D0%A3%CA%B1
作者: hao009 时间: 2013-11-12 14:23
本帖最后由 hao009 于 2013-11-12 15:35 编辑
谢谢,这些代码可以关闭程序后自动进行下一步了,但不知道是不是哪里不对,固定时间不起作用,每50秒自动回调没生效。
再我把代码里2.cmd改为1.exe,就是一般软件的启动文件,提示16 bit MS-DOS Subsystem,无法启动程序,在xp和win7x32都试过了。
作者: foxJL 时间: 2013-11-12 16:06
再试试这个可以回调时间吗?我在XP上测试可以- @echo off
- (echo,@echo off
- echo,:a
- echo,time 10:10
- echo,ping /n 50 127.1^>nul
- echo,goto a)>2.cmd
- echo,N|start /WAIT "" "2.cmd"
- cls
- echo,继续运行的代码...
- pause
复制代码
1.exe双击可以运行吗?如果只是在命令行里不行,
试试改成- start /WAIT /SEPARATE "" "1.exe"
复制代码
或- start /WAIT /SHARED "" "1.exe"
复制代码
作者: hao009 时间: 2013-11-12 17:20
我试了,@echo off
(echo,@echo off
echo,:a
echo,time 10:10
echo,ping /n 50 127.1^>nul
echo,goto a)>2.cmd
使用它,不出现时间固定,时间也没有修改。
加上echo,N|start /WAIT "" "2.cmd"
cls
文件启动不了,提示16位程序,XP和win7都是这么提示的。
作者: hao009 时间: 2013-11-12 17:48
感觉是1-6行代码有问题,我单独用echo,N|start /WAIT "" "2.cmd"
start /WAIT /SEPARATE "" "1.exe"
start /WAIT /SHARED "" "1.exe"
这3个都可以启动软件,但和前6行一组合,就不能用了,提示16位程序,然后7M的exe文件被减少为1K大了。
这个exe文件是双击可以直接打开软件的。
作者: foxJL 时间: 2013-11-12 21:22
你是不是把第6行的 echo,goto a)>2.cmd 也改成了 echo,goto a)>1.exe
这里不能改,否则会把你的exe替换.
作者: hao009 时间: 2013-11-12 22:31
原来是第6行我改错的问题,谢谢,现在可以启动1.exe了,但目前时间循环还是不起作用。
作者: foxJL 时间: 2013-11-12 22:39
不知道你那是怎么回事,我XP和WIN7上都测试能回调时间.
作者: hao009 时间: 2013-11-13 08:31
我知道原因了,第6行和第7行的2.cmd都不能修改,然后会同时开2个dos窗口,其中一个会有时间循环。
那我想运行1.exe应该在哪里加它?
作者: hao009 时间: 2013-11-13 08:53
本帖最后由 hao009 于 2013-11-13 11:09 编辑
我现在这么写代码,start 1.exe加在第三行,启动时出2个dos窗口,并启动软件,成功了。
但关闭软件,再关闭时间循环的窗口很容易关错另一个窗口,无法进行下一步的自动校时,有没有好办法关闭软件时自动关闭时间循环的窗口? 请再指点下,谢谢。
作者: foxJL 时间: 2013-11-13 08:53
1.exe是否运行后要等它结束再继续运行别的命令,和时间循环的先后顺序怎样?
作者: hao009 时间: 2013-11-13 09:47
本帖最后由 hao009 于 2013-11-13 09:49 编辑
time 8:30,就是说,1.exe只能在这一分钟内运行,不能超过一分钟,所以先修改系统时间,启动软件,再时间循环,或先时间循环,启动软件。
关闭软件,然后关闭时间循环,剩下的窗口进行下一步,校时。
目前是希望在关闭软件后,时间循环窗口自动关闭,因为我在测试时,好几次误关了另一个窗口,时间循环的最后关了,那就无法校时了。
作者: foxJL 时间: 2013-11-13 10:22
- @echo off
- time 8:30
- start "" "1.exe"
- (echo,@echo off
- echo,:a
- echo,echo,时间循环...并检测1.exe是否运行,否则自动退出。
- echo,tasklist/nh^|find "1.exe"^>nul ^|^| exit
- echo,time 8:30
- echo,ping /n 5 127.1^>nul ^& goto a )>2.cmd
- echo,N|start /WAIT "" "2.cmd"
- cls
- echo,继续运行的代码...
- pause
复制代码
作者: hao009 时间: 2013-11-13 10:53
本帖最后由 hao009 于 2013-11-13 11:02 编辑
谢谢,现在全都好用了。
作者: foxJL 时间: 2013-11-13 10:58
第9行echo,ping /n 5这个数字你自己改
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |