Board logo

标题: [日期时间] [已解决]win7下批处理如何实现每50秒返回时间来固定时间? 以及关闭文件后自动校时 [打印本页]

作者: hao009    时间: 2013-11-11 23:23     标题: [已解决]win7下批处理如何实现每50秒返回时间来固定时间? 以及关闭文件后自动校时

本帖最后由 hao009 于 2013-11-13 11:13 编辑
  1. @echo off
  2. :a
  3. time 15:30                           
  4. ping -n 50 127.0.0.1>nu
  5. goto a
  6. 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

  1. @echo off
  2. (echo,time 10:10
  3. echo,:a
  4. echo,time 10:10
  5. echo,TIMEOUT /T 50
  6. echo,goto a)>2.cmd
  7. echo,N|start /WAIT "" "2.cmd"
  8. cls
  9. echo,继续运行的代码...
  10. 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上测试可以
  1. @echo off
  2. (echo,@echo off
  3. echo,:a
  4. echo,time 10:10
  5. echo,ping /n 50 127.1^>nul
  6. echo,goto a)>2.cmd
  7. echo,N|start /WAIT "" "2.cmd"
  8. cls
  9. echo,继续运行的代码...
  10. pause
复制代码
1.exe双击可以运行吗?如果只是在命令行里不行,
试试改成
  1. start /WAIT /SEPARATE "" "1.exe"
复制代码
  1. 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

  1. @echo off
  2. time 8:30
  3. start "" "1.exe"
  4. (echo,@echo off
  5. echo,:a
  6. echo,echo,时间循环...并检测1.exe是否运行,否则自动退出。
  7. echo,tasklist/nh^|find "1.exe"^>nul ^|^| exit
  8. echo,time 8:30
  9. echo,ping /n 5 127.1^>nul ^& goto a )>2.cmd
  10. echo,N|start /WAIT "" "2.cmd"
  11. cls
  12. echo,继续运行的代码...
  13. 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