Board logo

标题: [其他] [已解决]如何实现批处理在指定的某个时间关机? [打印本页]

作者: a87750530    时间: 2011-6-25 19:26     标题: [已解决]如何实现批处理在指定的某个时间关机?

本帖最后由 a87750530 于 2011-6-26 21:03 编辑

例如:现在是2011年6月25日19点20分(然后电脑一直开着)
到2012年2月29日18点05分关机
也就是想在指定的某一个时间关机,并且能计算输入关机时间的正确性。年份么越久越好了!
这样的代码如何写,网上倒是定时关机的一大把,可是这样的就没有了,请教给位一下!谢谢!
  1. @echo off
  2. :powerdown
  3. MODE con: COLS=80 LINES=40
  4. cls
  5. color 0a
  6. echo ┌————————————————┐
  7. echo 丨                                丨
  8. echo 丨 %date:~0,4%年%date:~5,2%月%date:~8,2%日  星期%date:~-1,1%    %time:~0,2%时%time:~3,2%分         丨
  9. echo 丨                                丨
  10. echo └———————————————─┘
  11. echo.
  12. echo.
  13. echo.
  14. echo  格式为2011-06-25
  15. set /P date=请输入日期:
  16. echo [24小时制]
  17. set /p time1=请输入时:
  18. set /p time2=请输入分:
  19. echo.
  20. if /i "%date%"=="" goto powerdown
  21. if /i "%time1%"=="" goto powerdown
  22. if /i "%time2%"=="" goto powerdown
  23. at %date% %time1%:%time2% shutdown -s -t 0 >nul
  24. echo.
  25. echo 您的电脑将在%date% %time1%:%time2%时刻关闭
  26. echo.
  27. echo 在关机之前,您可以随时取消关机计划
  28. echo.
  29. echo.
  30. echo.
  31. pause
  32. exit
复制代码
我写了一下,貌似不会关机啊!
作者: cjiabing    时间: 2011-6-25 19:35

schtasks一行搞定!~
不过schtasks比较复杂,很少人去玩
作者: Batcher    时间: 2011-6-25 19:38

如果要命令行的话,一个简单的schtasks就能搞定;
如果要交互,系统自带的任务计划向导多好啊,何必批处理?
作者: 601997526    时间: 2011-6-25 20:04

不知道楼主的本意是想要任意的年月日还是想只要能关机就行
如果是想要任意时间可以用at %random%
如果是要关机用shutdown
作者: a87750530    时间: 2011-6-25 21:29

本帖最后由 a87750530 于 2011-6-25 21:31 编辑

schtasks /create /ru system /tn shutdown  /tr shutdown .exe /st 08:00:00
是不是这样啊?
还不不明白请教楼上的at %random%怎么用在这个代码里面啊?
我是想要在某个时间关机,如现在是2011年6月25日,(然后电脑就一直开着)一直到2012年2月29日14点50分关机,
作者: a87750530    时间: 2011-6-25 22:36

本帖最后由 a87750530 于 2011-6-26 12:29 编辑
  1. @echo off
  2. :powerdown
  3. MODE con: COLS=80 LINES=40
  4. cls
  5. color 0a
  6. echo ┌————————————————┐
  7. echo 丨                                丨
  8. echo 丨 %date:~0,4%年%date:~5,2%月%date:~8,2%日  星期%date:~-1,1%    %time:~0,2%时%time:~3,2%分         丨
  9. echo 丨                                丨
  10. echo └———————————————─┘
  11. echo.
  12. echo.
  13. echo.
  14. echo  格式为2011-06-25
  15. set /P date=请输入日期:
  16. echo [24小时制]
  17. set /p time1=请输入时:
  18. set /p time2=请输入分:
  19. echo.
  20. if /i "%date%"=="" goto powerdown
  21. if /i "%time1%"=="" goto powerdown
  22. if /i "%time2%"=="" goto powerdown
  23. at %date% %time1%:%time2% shutdown -s -t 0 >nul
  24. echo.
  25. echo 您的电脑将在%date% %time1%:%time2%时刻关闭
  26. echo.
  27. echo 在关机之前,您可以随时取消关机计划
  28. pause
  29. exit
复制代码

请教楼长的这样关机可不可以?
经过测试,不会关机!如果去掉%date%这段,还有at %date%这段倒是会关机的!请高人帮忙!
作者: 601997526    时间: 2011-6-26 15:50

5# a87750530

没看清楚原来你说的是要指定年月日的
把你写的这代码改了下,你自己去测试下吧
  1. @echo off
  2. :powerdown
  3. MODE con: COLS=80 LINES=40
  4. cls
  5. color 0a
  6. echo ┌——————————————————┐
  7. echo 丨                                    丨
  8. echo 丨 %date:~0,4%年%date:~5,2%月%date:~8,2%日  星期%date:~-1,1%    %time:~0,2%时%time:~3,2%分 丨
  9. echo 丨                                    丨
  10. echo └—————————————————─┘
  11. echo.
  12. echo.
  13. echo.
  14. echo  格式为2011/06/25
  15. set /P date1=请输入日期:
  16. echo %date1%|findstr "^[2-9][0-9][0-9][0-9]/[0-1][0-9]/[0-3][0-9]$"||goto :错误
  17. if %date1:~0,4% lss %date:~0,4% goto :错误
  18. if %date1:~5,2% gtr 12 goto :错误
  19. if %date1:~8,2% gtr 31 goto :错误
  20. echo [24小时制]
  21. set /p time1=请输入时:
  22. echo %time1%|findstr "^[0-2][0-9]$"||goto :错误
  23. if %date1:~5,2% lss %date:~5,2% gtr 23 goto :错误
  24. set /p time2=请输入分:
  25. echo %time2%|findstr "^[0-5][0-9]$"||goto :错误
  26. set /p 密码=请输入计算机密码(没有请直接按回车键):
  27. echo,%密码%|schtasks /create /tn %random%%random%%random% /sc once /sd %date1% /st %time1%:%time2%:00 /tr "shutdown.exe -s -t 1"
  28. echo.&echo.&echo.
  29. echo 您的电脑将在%date1% %time1%:%time2%时刻关闭
  30. echo.
  31. echo 在关机之前,您可以随时取消关机计划
  32. pause>nul&exit
  33. :错误
  34. echo,你的输入有误,请重新输入......&pause>nul&goto :powerdown
复制代码

作者: a87750530    时间: 2011-6-26 21:00

谢谢楼上的修改,可以关机了!




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