(bat)指定周几的几点重启电脑

 

 

使用说明:

第一次运行会提示您配置参数,设置完成后会生成一个.ini配置文件 和 一个.log日志

若要重新配置参数,需要删除.ini的配置文件 并 再次运行bat

若要删除计划任务,需要删除.ini的配置文件并再次运行bat 根据bat内提示操作

不能更改bat及和它生成的路径位置。否则设置的计划任务会无效。

 

 

存在BUG:

1.比如 设置成星期一的 8:00 进行重启 ,那么在星期一的时候(无论是几点钟) 手动运行也会触发重启,因为没有加时间判定。

2. 不能检查输入的时间格式,错误的时间格式并不能配置成功

可能存在未知BUG,未进行全面测试

@Echo off
SET ROOT=%~dp0
SET CONFIG_FILE=%ROOT%config_d.ini
set log=%ROOT%log.log
set logtime=%date:~,10% %time:~,8%
if exist "%log%" (goto :you ) else (goto :mei)

:you
echo ============================================================ >>log.log
echo %logtime% 开始运行 >>log.log
goto :ini

:mei
echo 以下为运行日志 >log.log
echo ============================================================ >>log.log
echo %logtime% 开始运行 >>log.log
goto :ini

:ini
if exist "%CONFIG_FILE%" (goto :ok ) else (goto :no)

:no
echo 配置文件不存在,已经进入配置页面  >>log.log
echo      =====================================================
echo               配置文件不存在,您已经进入配置页面
echo      按(S)删除重启计划 或 直接按下方括号中的数字重新设置
echo      =====================================================
goto :no1

:no1
echo,
echo                  请选择您要在星期几设定重启
echo,
echo (1)星期一    (2)星期二    (3)星期三    (4)星期四
echo (5)星期五    (6)星期六    (7)星期日    (0)退  出
echo,
echo               请输入上方括号中的数字进行下一步
choice /c 12345670s /n >nul
if %errorlevel%== 1 (set xingqi=一)
if %errorlevel%== 2 (set xingqi=二)
if %errorlevel%== 3 (set xingqi=三)
if %errorlevel%== 4 (set xingqi=四)
if %errorlevel%== 5 (set xingqi=五)
if %errorlevel%== 6 (set xingqi=六)
if %errorlevel%== 7 (set xingqi=日)
if %errorlevel%== 8 (goto :q )
if %errorlevel%== 9 (goto :s)
echo,
echo 您选择的是星期%xingqi%
echo 设置星期为%xingqi% >>log.log
goto shijian

:shijian
echo,
echo 您要在星期%xingqi%那个时间重启电脑?
echo 时间格式为 HH:mm(24 小时时间) 请严格按照提示输入
echo 例如 14:30 , 07:01 ,09:55 , 23:32
set /p shijian=请输入时间并按回车键:
goto :zb

:zb
echo,
echo 根据您的输入 将在每星期的星期%xingqi%的 %shijian% 进行重启
echo 请再三确定时间格式为 HH:mm 和标点符号是否正确
echo 否则出现的各种未知问题,本程序概不负责
echo,
echo 确认请按(y)  修改星期请按(x)  修改时间请按(j)  退出请按(q)
choice /c yxjq /n >nul
if %errorlevel%== 1 (goto :xieru)
if %errorlevel%== 2 (goto :xingqi)
if %errorlevel%== 3 (goto :shijian)
if %errorlevel%== 4 (goto :q)

:xingqi
echo,
echo                请再次选择您要在星期几设定重启
echo,
echo (1)星期一    (2)星期二    (3)星期三    (4)星期四
echo (5)星期五    (6)星期六    (7)星期日    (0)退  出
echo,
echo               请输入上方括号中的数字进行下一步
choice /c 12345670 /n >nul
if %errorlevel%== 1 (set xingqi=一)
if %errorlevel%== 2 (set xingqi=二)
if %errorlevel%== 3 (set xingqi=三)
if %errorlevel%== 4 (set xingqi=四)
if %errorlevel%== 5 (set xingqi=五)
if %errorlevel%== 6 (set xingqi=六)
if %errorlevel%== 7 (set xingqi=日)
if %errorlevel%== 8 (goto :q )
echo 修改星期为%xingqi% >>log.log
goto :zb

:xieru
echo 设置为星期%xingqi%的 %shijian%,并开始生成ini >>log.log
echo 此配置文件为设定定时重启任务时生成,必须与主程序存在同一目录下 >"%CONFIG_FILE%"
echo 请不要随意修改以下参数,若要重新设置定时重启任务请删除本配置文件后,允许主程序 >>"%CONFIG_FILE%"
echo date1=%xingqi% >>"%CONFIG_FILE%"
echo time1=%shijian% >>"%CONFIG_FILE%"
goto :shezhi

:shezhi
echo,
set chengxu="cmd /c '%~0'"
schtasks /create /tn 定时重启任务 /tr %chengxu% /sc DAILY /st %shijian% /ru %username% /f
echo 设置完成 >>log.log
echo 按任意键退出
pause >nul
exit

:ok
echo 发现ini,正在执行 >>log.log
setlocal enabledelayedexpansion
for /f "delims=" %%a in ('type "config_d.ini"^| find /i "="') do (
set %%a
)
echo %date1%
echo %time1%
set bb=%date:~12,13%
if %bb%==%date1% goto :open
goto :ex

 
:open
echo 当前是星期%bb%,当前时间为%time:~,8%。与设置相符,开始重启 >>log.log
shutdown /r /f /t 5
exit

:ex
echo 当前是星期%bb%,当前时间为%time:~,8%。与设置不相符。程序退出 >>log.log
echo 将在明天的%time1%。再次检查。程序退出 >>log.log
exit

:s
schtasks /delete /tn 定时重启任务 /f >>log.log
echo 已删除重启计划
goto :no1

:q
echo 用户选择退出 >>log.log
exit

  

 

 

posted @ 2016-09-26 21:49  Mask-z  阅读(1983)  评论(0编辑  收藏  举报