::`1234567890-=qwertyuiop[]\asdfghjkl;'zxcvbnm,./ ~!@#$%*)_WERTYUIOP{}|SDFGHJKL:"ZXCVBNM<>?

::本想过滤特殊字符,防止误输入,可是bat的处理非常郁闷,于是就不考虑这块了.
@echo off
title 定时关机工具
color
shutdown /a
cls
:loop
echo.
echo 已经取消自动定时关机
echo 请选择操作
echo.
echo 请输入多少分钟后自动关机数字
echo 或关闭退出
echo.
set ttt=no
set  /p ttt=
set /a ttt*=60
if %ttt% gtr 0 (
    goto close 
)else (
    goto e_input
)
:eof_input

:e_input
    shutdown /a
    cls
    echo.
    echo 输入有误,请重新输入
    echo.
    goto loop
:eof_e_input

:close
    shutdown /a
    cls
    color 09    
    shutdown /s /f /c "用户设定自动定时关机" /t %ttt%
    set /a ttt/=60
    title 在%time%设定了 %ttt% 分钟后自动关闭计算机,在本窗口按任意键可以取消
    echo 您在%time%时,设定了 %ttt% 分钟后自动关闭计算机
    echo.
    echo 在本窗口按任意键将取消自动关机
    echo.
    echo 如不小心关闭了本窗口后,需重新打开本程序才会取消自动关机
    set /p no=
    echo 自动关机已经被取消
    shutdown /a
    echo.
    echo 本窗口稍候自动关闭...
    ping 127.0.0.1 -n 5 >nul
    goto :EOF
    exit
:eof_close


::因为bat无法多线程,使用倒计时就不能取消,只能重新打开程序才能取消,不方便,就不倒计时了.