Windows中的定时关机脚本
在桌面新建一个文本文档,修改页面后缀,将txt改为bat,如果没有显示txt请检查是否隐藏文件名后缀,再根据需要选择将下面的代码复制到文档中,保存并退出,在桌面上双击这个文档,比较方便,适用于windows系统的win10和win11
##再下拉即可关机##
SlideToShutdown
##立即强制关闭计算机##
shutdown /s /f /t 0
##立即强制重启计算机##
shutdown /r /f /t 0
##创建计划任务(60分钟后关机)##
@echo offchcp 65001 >nul
title 60分钟倒计时自动关机
cls:: 显示菜单
echo ╔══════════════════════════════════════╗
echo ║ 自动关机程序 v1.0 ║
echo ╠══════════════════════════════════════╣
echo ║ 1. 60分钟后关机 ║
echo ║ 2. 30分钟后关机 ║
echo ║ 3. 90分钟后关机 ║
echo ║ 4. 自定义关机时间 ║
echo ║ 5. 取消关机计划 ║
echo ║ 6. 查看剩余时间 ║
echo ║ 0. 退出程序 ║
echo ╚══════════════════════════════════════╝
echo.set /p choice="请选择操作 [0-6]: "
if "%%choice%%"=="1" goto :60min
if "%%choice%%"=="2" goto :30min
if "%%choice%%"=="3" goto :90min
if "%%choice%%"=="4" goto :custom
if "%%choice%%"=="5" goto :cancel
if "%%choice%%"=="6" goto :status
if "%%choice%%"=="0" exit /b 0echo 无效的选择!
pause
goto :eof:60min
set shutdown_seconds=3600
set shutdown_minutes=60
goto :confirm:30min
set shutdown_seconds=1800
set shutdown_minutes=30
goto :confirm:90min
set shutdown_seconds=5400
set shutdown_minutes=90
goto :confirm:custom
cls
echo 请输入关机时间(单位:分钟):
echo 注意:1分钟 = 60秒
echo 最大可设置10年(约5,256,000分钟)
echo.
set /p custom_minutes="分钟数: "
set /a shutdown_seconds=%%custom_minutes%% * 60
set shutdown_minutes=%%custom_minutes%%
goto :confirm:confirm
cls
echo 您选择了 %%shutdown_minutes%% 分钟后关机(%%shutdown_seconds%% 秒)
echo.
echo 警告:关机前请保存所有工作!
echo.
choice /c YN /n /m "确定要设置%%shutdown_minutes%%分钟后关机吗?(Y/N)"if %%errorlevel%% equ 2 (
echo 操作已取消。
pause
exit /b 0
)echo 正在设置关机计划...
shutdown /s /f /t %%shutdown_seconds%%if %%errorlevel%% equ 0 (
echo ✓ 关机计划设置成功!
rem 计算关机时间
call :calc_shutdown_time %%shutdown_minutes%%
echo.
echo 当前时间:%%time%%
echo 预计关机时间:%%shutdown_hour%%:%%shutdown_minute%%
echo.
echo 正在启动倒计时显示...
timeout /t 2 /nobreak >nul
rem 显示倒计时界面
call :countdown_display %%shutdown_seconds%%
) else (
echo ✗ 设置失败!请以管理员身份运行。
pause
)exit /b 0
:calc_shutdown_time
set /a add_minutes=%%1
for /f "tokens=1-2 delims=:" %%%%a in ("%%time%%") do (
set /a hour=%%%%a
set /a minute=%%%%b
)rem 处理空格
set "hour=%%hour: =%%"set /a minute=minute+add_minutes
if !minute! geq 60 (
set /a hour=hour+minute/60
set /a minute=minute%%%%60
)
if !hour! geq 24 set /a hour=hour-24if !hour! lss 10 set hour=0!hour!
if !minute! lss 10 set minute=0!minute!
set shutdown_hour=!hour!
set shutdown_minute=!minute!
goto :eof:countdown_display
set total_seconds=%%1
:loop
cls
set /a hours=total_seconds/3600
set /a minutes=(total_seconds%%%%3600)/60
set /a seconds=total_seconds%%%%60
echo ╔══════════════════════════════════════╗
echo ║ 关机倒计时显示 ║
echo ╠══════════════════════════════════════╣
echo ║ 剩余时间: ║
echo ║ ║
echo ║ %%hours%%小时%%minutes%%分钟%%seconds%%秒 ║
echo ║ ║
echo ║ 预计关机时间: ║
echo ║ %%shutdown_hour%%:%%shutdown_minute%% ║
echo ╚══════════════════════════════════════╝
echo.
echo 按 Ctrl+C 取消关机并退出程序if %%total_seconds%% leq 0 (
echo 正在关机...
exit /b 0
)set /a total_seconds=total_seconds-1
timeout /t 1 /nobreak >nul 2>&1
goto :loop:cancel
shutdown /a >nul 2>&1
if %%errorlevel%% equ 0 (
echo ✓ 关机计划已取消!
) else (
echo 没有找到活动的关机计划。
)
pause
exit /b 0:status
shutdown /l
echo.
echo 按任意键返回主菜单...
pause >nul
goto :eof
##### 创建计划任务(30分钟后关机)#####
@echo off
choice /c YN /m "将在30分钟后关机,是否继续?[Y/N]"
if errorlevel 2 goto :cancel
if errorlevel 1 goto :shutdown:shutdown
echo 正在设置30分钟后关机...
shutdown /s /f /t 1800
echo 关机计划已设置!
echo 如需取消,请按任意键运行取消命令...
pause >nul
shutdown /a
echo 关机计划已取消!
pause
exit:cancel
echo 操作已取消。
pause