无忧启动论坛

标题: 我也来学学批处理.请各位批处理大虾们帮忙. [打印本页]

作者: hero123    时间: 2006-8-17 21:59
标题: 我也来学学批处理.请各位批处理大虾们帮忙.
自学了一阵子的批处理..今天想试编一下.
不知道批处理能不能这样执行.
思路是这样的.编写一个批处理使得计算机在某一时间后才能开机.
批处理放在组策略---windows设置----脚本-----登陆
可不可以让批处理先获取系统时间.再执行相应语句.
我上网看了一下批处理获取时间的语句:
set AFile=bak-%DATE:~4,4%%DATE:~9,2%%DATE:~12,2%
set BFile=bak-%TIME:~0,2%%TIME:~3,2%%TIME:~6,2%
用判断if是否用IF ERRORLEVEL <测试前一个命令的返回值>..如果大于某时间返回一个值..如果不大于返回另一个值.如果返回大于的那个值进不进行任何操作.如果返回的另一个值则shutdown
不知道我以上的思路是否正确...
作者: namejm    时间: 2006-8-17 22:30
  在某个时间才开机?电都断了,你要代码替你把电源开关打开么?这个想法太疯狂了。估计这么牛的程序还没出世,呵呵。

  如果要在指定的时间关机的话,这个还是办得到的,实现的方法也不复杂,at+shutdown就可以了。
作者: 安情    时间: 2006-8-17 22:34
楼主的意思, 是开机后,在某一时间进入系统后关机吧?
作者: namejm    时间: 2006-8-18 09:13
  如果楼主的意思像3楼所说的那样,可以参考这个帖子:

  想编一个批处理,在xp的某一时间,无法进入系统? http://www.cn-dos.net/forum/view ... id=ON0tfV#pid135611

[ 本帖最后由 namejm 于 2006-8-18 09:15 AM 编辑 ]
作者: hero123    时间: 2006-8-18 13:13
意思大致是这样的,我想电脑在12点前都没办法开机(开机后shutdown)12点后开系统可以正常运行。
@echo off
setlocal enabledelayedexpansion
for /f "tokens=1,2 delims=:" %%i in ('time /t') do (
    set hour=x%%i& set minute=x%%j
    set hour=!hour:~-2!& set minute=!minute:~-2!
    set now=!hour!!minute!
    set "now=!now: =!"
    if !now! gtr 800 if !now! lss 1030 shutdown -s
)
有的句子看不大懂。有没有人注释一下。谢谢 。。。。。
作者: namejm    时间: 2006-8-18 14:01
原帖由 hero123 于 2006-8-18 01:13 PM 发表
@echo off
:: 启用变量延迟
setlocal enabledelayedexpansion
:: 'time /t'在for语句中表示取系统当前时间,整体的意思是取冒号之前的小时数和之后的分钟数,抛弃秒数和微秒数
for /f "tokens=1,2 delims=:" %%i in ('time /t') do (
    :: 特别注意:以下set语句中的&要紧跟前一句,之前不可留空格,否则会引起麻烦
    set hour=x%%i& set minute=x%%j                 :: 分别在小时数和分钟数前插入任意字符(此处插入x),以便于对小于10的数进行处理
    set hour=!hour:~-2!& set minute=!minute:~-2!  :: 取最后两位数,则形如08、09之类小于10的数都转化为形如8、9的数
    set now=!hour!!minute!       :: 把取到的小时数和分钟数拼接起来
    set "now=!now: =!"           :: 这一句是去掉拼接数中可能含有的空格;如果以上部分照写,则可去掉此句
    if !now! gtr 800 if !now! lss 1030 shutdown -s   :: 对拼接后的数进行检查,看是否处于受限制的范围
    :: 如果要在12点之前禁止开机,上一句可改成if !now! lss 1200 shutdown -s;并且以上代码还可以简化
)


  哎呀我的妈呀,代码不多,注释反倒一大串,写注释比写代码要累得多呀。希望各位在没事的时候常在CMD窗口中用"命令+空格+/?"来查看帮助信息,或者是运行 hh %systemroot%\ntcmds.chm,或者是copy %systemroot%\ntcmds.chm>"指定位置"然后到指定位置找ntcmd.chm来看。

[ 本帖最后由 namejm 于 2006-8-18 05:15 PM 编辑 ]
作者: hero123    时间: 2006-8-18 16:28
仁兄辛苦了......感谢到流鼻涕.....
作者: namejm    时间: 2006-8-18 17:16
原帖由 hero123 于 2006-8-18 04:28 PM 发表
仁兄辛苦了......感谢到流鼻涕.....

  
  长太息以掩涕兮……哈哈
作者: pcs2006    时间: 2006-8-18 21:26
这个时间不可靠吧,且不管batch对不对,人家在cmos或系统改一下时间不就破了吗?
作者: namejm    时间: 2006-8-18 21:39
  只要是程序,都有它的弱点,只是程度上的差异而已。这段代码对付一般的菜鸟是绰绰有余了。
作者: hero123    时间: 2006-8-19 19:21
呵呵...讨论讨论而已.....




欢迎光临 无忧启动论坛 (http://wuyou.net/) Powered by Discuz! X3.3