//*********************************   说明   *****************************************
//时间格式为24小时制 -- 00:00~23:59
//当不在这个范围内会报错并返回让用户重新输入~~ :)
//*********************************   源代码   *****************************************
dim Obj,UserName,NowTime,LenS,Num
set Obj = createobject("WScript.Shell")
//调用“Wscript.Shell”
UserName=Obj.RegRead("HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\RegisteredOwner")
// RegRead -- 读取注册表
YN=Obj.Popup(UserName&" 你好,是否使用自动定时关机?",0,"关机?",36)
//Popup--弹出对话框
If YN=6
    //标记 输入时间
    Rem InputTime
    VBSCall SWTime=InputBox ("请输入关机时间!24小时格式(00:00~23:59之间)!如:2:03 , 22:35")
    //*********************************** 判断时间格式 ****************************************************
    LenS=Len(SWTime)
    //Len--获得字符串的长度
    Num=Instr(SWTime,":")
    //Instr--获得":"所在字符串中的位置
    If Num=0
        Num=Instr(SWTime,":")
    EndIf 
    If Num=0
        Call Obj.Popup("间隔符错误!请用“ : ”或者“ : ”",5,"时间格式错误!",48)
        //跳到 输入时间
        Goto InputTime
    EndIf 
    If left(SWTime,Num-1)>23 or left(SWTime,Num-1)<0
        //left--取字符串左边Num-1个长度的字符
        Call Obj.Popup("小时格式输入错误!",5,"时间格式错误!",48)
        Goto InputTime
    EndIf 
    If Right(SWTime,LenS-Num)>59 or Right(SWTime,LenS-Num)<0
        //Right--取字符串右边LenS-Num个长度的字符
        Call Obj.Popup("分钟格式输入错误!",5,"时间格式错误!",48)
        //跳到 输入时间
        Goto InputTime
    EndIf 
    //*********************************** 判断时间格式 ****************************************************
    Call Obj.Popup("系统将在"&SWTime&"关机!!",5,"自动关机!",48)
    Rem Start
    NowTime=Time
    //Time -- 获得当前时间
    If Hour(SWTime)=Hour(NowTime) and Minute(SWTime)=Minute(NowTime)
        //Hour -- 获得小时, Minute -- 获得分钟
        Obj.Run "shutdown /f /s /t 0"
        //调用shutdown命令。 /f--强行关闭应用程序而不提醒, /s--关闭计算机(要重启的话,请把这改成/r[重启计算机]),/t time--在time秒后前闭计算机。
    EndIf 
    Delay 30000
    Goto Start
EndIf