首页 > 其他分享 >批处理定时关机

批处理定时关机

时间:2024-04-30 09:34:19浏览次数:27  
标签:关机 goto 批处理 自动关机 echo shutdown 定时 输入

@echo off
REM Author: YooooungLee TEL 155-****-9552

echo 欢迎使用自动关机计划设置脚本!
echo.

:choose_action
set /p "action_choice=请选择要执行的操作(输入1设置定时关机任务,输入2删除定时关机任务):"

if "%action_choice%"=="1" (
    echo.
    echo -- 设置定时关机任务 --
    echo.
    REM 设置定时关机任务脚本
    goto set_shutdown_task
)

if "%action_choice%"=="2" (
    echo.
    echo -- 删除定时关机任务,如提示“错误:拒绝访问”,请退出后,以管理员权限重新运行程序 --
    echo.
    REM 删除定时关机任务脚本
    goto delete_shutdown_task
)

echo 错误:无效的选项,请输入1或2来选择操作。
echo.
pause
goto choose_action

:set_shutdown_task
:: 之前完成的设置定时关机任务的脚本
setlocal enabledelayedexpansion

:input_time
set /p shutdown_time=请输入每日关机时间(格式为HH:mm,例如 20:00 表示晚上8点):

rem 检查输入的时间格式是否正确
for /f "tokens=1,2 delims=:" %%a in ("%shutdown_time%") do (
    set "hour=%%a"
    set "minute=%%b"
)

rem 检查小时和分钟是否都是数字
echo %hour% | findstr /r "[0-9]" >nul
if %errorlevel% neq 0 (
    echo 错误:输入的时间格式不正确,请重新输入。
    goto input_time
)
echo %minute% | findstr /r "[0-9]" >nul
if %errorlevel% neq 0 (
    echo 错误:输入的时间格式不正确,请重新输入。
    goto input_time
)

rem 检查小时和分钟是否在合法范围内(小时:00到23,分钟:00到59)
if %hour% lss 0 (
    echo 错误:输入的小时值不能小于0,请重新输入。
    goto input_time
)
if %hour% gtr 23 (
    echo 错误:输入的小时值不能大于23,请重新输入。
    goto input_time
)
if %minute% lss 0 (
    echo 错误:输入的分钟值不能小于0,请重新输入。
    goto input_time
)
if %minute% gtr 59 (
    echo 错误:输入的分钟值不能大于59,请重新输入。
    goto input_time
)

echo 正在设置每日 %shutdown_time% 自动关机...
echo 请勿关闭此窗口,否则设置将失效.

:: 删除之前设置的同名自动关机任务(如果存在)
schtasks /delete /tn "每日自动关机" /f >nul 2>&1

:: 创建新的自动关机任务
schtasks /create /tn "每日自动关机" /tr "shutdown /s /f /t 0" /sc daily /st %shutdown_time%

echo 每日 %shutdown_time% 自动关机任务设置完毕。
echo 可以双击此脚本再次设置计划任务或手动删除计划任务。
pause
goto :EOF

:delete_shutdown_task
:: 删除定时关机任务的脚本
echo 正在删除之前设置的每日自动关机任务...
schtasks /delete /tn "每日自动关机" /f
echo 已删除之前设置的每日自动关机任务。
pause
goto :EOF

  

标签:关机,goto,批处理,自动关机,echo,shutdown,定时,输入
From: https://www.cnblogs.com/xiongwei/p/18167112

相关文章

  • delphi 2006中,使用stdcall调用约定时,压缩结构参数的bug分析
    问题今天遇到一个很奇怪的问题,有一个dephi2006写的dll,使用了stdcall的调用约定,参数传递了结构体,在函数中收到的结构体值和传入的不一致,最后一个boolean类型,应为False,收到的是True,如下图:代码//结构体定义RStruct=packedrecordi1:Integer;i2:Integer;i3:I......
  • openGauss 批处理模式
    批处理模式openGauss支持从文本文件执行SQL语句。openGauss提供了gsql工具实现SQL语句的批量处理。以下场景建议使用批处理:如果您重复运行查询(例如,每天或每周),将其设为脚本可以让您避免每次进行重复输入。您可以通过复制和编辑脚本文件从现有的相似查询生成新查询。对于多行......
  • golang 1.20.13 定时执行bat shell 脚本
    golang1.20.13定时执行batshell脚本packagemainimport("fmt""os/exec""time")funcmain(){//设置定时任务的时间t:=time.Now()next:=time.Date(t.Year(),t.Month(),t.Day(),13,53,0,0,t.Location())......
  • 什么是 DNS?DNS设定时常见的问题都有哪些?
    DNS(DomainNameSystem)即域名系统,它是互联网的一项服务。它主要的作用是将域名转换为对应的IP地址,以便计算机能够识别和访问互联网上的各种资源。当我们在浏览器中输入域名时,DNS会帮助我们找到与之对应的服务器的真实IP地址,从而实现网络通信。当你在浏览器输入一串网址,浏览......
  • JMeter定时器(一)
    一前言环境:window10JMeter5.3二定时器定时器(Timers)的作用就是对取样器(sampler)的执行进行延迟,所以,定时器只对同作用域的取样器有意义定时器会在其所处作用域内的取样器之前执行。把定时器添加为取样器的子节点,这样就会在取样器之前执行1固定定时器这个比较简单,延迟时......
  • RocketMQ定时/延时消息
    什么是延时消息当消息写入到Broker后,在指定的时长后才可被消费处理的消息,称为延时消息。采用RocketMQ的延时消息可以实现定时任务的功能,而无需使用定时器。典型的应用场景是,电商交易中超时未支付关闭订单的场景,12306平台订票超时未支付取消订票的场景。在电商平台中,订单创建......
  • 前端工程师-自动拉取iconfont的批处理文件-windows10版本-用到了powershell的解压功能
    直接上代码,有任何问题直接留言,我们一起讨论  @echooffSETdirName=替换成压缩包解压后希望叫的名字SETOldPattern=font_*_*rmdir/q/s"删除原来的iconfont文件夹,这里替换成原来的文件夹的地址"curl--output%这里的地址是你想把从iconfont上下载下来的安装包......
  • van-dialog 点击confirm确定时如果不满足条件则不允许关闭
    <van-dialogv-model="showDialog"@confirm="confirmFn"@cancel="showDialog=false"title="添加故障现象"show-cancel-button:before-close="onBeforeClose">......
  • springboot 统计接口耗时及指定时间接口访问次数
     1.使用AOP在不改变原有方法的基础上对接口方法增强,引入依赖<!--引入AOP依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId></dependency><!--引入Redis依赖--><depen......
  • ORACLE定时器,执行周期设定
    对于DBA来说,数据库Job再熟悉不过了,因为经常要数据库定时的自动执行一些脚本,或做数据库备份,或做数据的提炼,或做数据库的性能优化,包括重建索引等等的工作。但是,Oracle定时器Job时间的处理上,千变万化,今天我把比较常用写法汇总如下:在总结之前,先把Job的参数一一说明一下:job参数是由Su......