本文目录导读:

Windows 系统
简单的批处理脚本(.bat)
@echo off自动关机计划 color 0A :menu cls echo ======================================== echo 自动关机计划工具 echo ======================================== echo. echo [1] 定时关机(30分钟后) echo [2] 自定义时间关机 echo [3] 取消自动关机 echo [4] 查看当前计划 echo [5] 退出 echo. echo ======================================== set /p choice=请选择操作: if "%choice%"=="1" goto auto_30 if "%choice%"=="2" goto custom if "%choice%"=="3" goto cancel if "%choice%"=="4" goto check if "%choice%"=="5" exit goto menu :auto_30 shutdown /s /t 1800 echo 已设置30分钟后自动关机 pause exit :custom cls set /p hour=请输入小时数: set /p minute=请输入分钟数: set /a total=(%hour%*3600)+(%minute%*60) shutdown /s /t %total% echo 已设置 %hour% 小时 %minute% 分钟后关机 pause exit :cancel shutdown /a echo 已取消自动关机 pause exit :check shutdown /? pause goto menu
PowerShell 脚本
# 自动关机计划 PowerShell 脚本
Write-Host "自动关机计划工具" -ForegroundColor Green
Write-Host "=================="
# 显示菜单
Write-Host "1. 设置定时关机"
Write-Host "2. 取消关机"
Write-Host "3. 查看当前计划"
$choice = Read-Host "请选择操作"
switch ($choice) {
'1' {
$hour = Read-Host "请输入小时数"
$minute = Read-Host "请输入分钟数"
$seconds = ($hour * 3600) + ($minute * 60)
Stop-Computer -Force -Timeout $seconds
Write-Host "已设置 $hour 小时 $minute 分钟后关机" -ForegroundColor Yellow
}
'2' {
shutdown /a
Write-Host "已取消自动关机" -ForegroundColor Green
}
'3' {
Get-ScheduledTask | Where-Object {$_.TaskName -like "*shutdown*"}
}
default {
Write-Host "无效选择" -ForegroundColor Red
}
}
Linux 系统
Bash 脚本
#!/bin/bash
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'
clear
echo "========================================"
echo -e "${GREEN} 自动关机计划工具${NC}"
echo "========================================"
echo ""
echo "[1] 定时关机(30分钟后)"
echo "[2] 自定义时间关机"
echo "[3] 取消自动关机"
echo "[4] 查看关机计划"
echo "[5] 退出"
echo "========================================"
read -p "请选择操作: " choice
case $choice in
1)
echo -e "${YELLOW}设置30分钟后自动关机...${NC}"
shutdown +30 "系统将在30分钟后自动关机"
;;
2)
read -p "请输入小时数: " hour
read -p "请输入分钟数: " minute
# 转换为分钟
total_minutes=$((hour * 60 + minute))
echo -e "${YELLOW}设置${hour}小时${minute}分钟后关机...${NC}"
shutdown +$total_minutes "系统将在${hour}小时${minute}分钟后自动关机"
;;
3)
echo -e "${GREEN}取消自动关机...${NC}"
shutdown -c
;;
4)
echo "当前关机计划:"
shutdown -k
;;
5)
echo "再见!"
exit 0
;;
*)
echo -e "${RED}无效的选择!${NC}"
;;
esac
macOS 系统
#!/bin/bash
clear
echo "========================================"
echo " macOS 自动关机计划"
echo "========================================"
echo ""
echo "1. 定时关机"
echo "2. 取消关机计划"
echo "3. 退出"
echo ""
read -p "请选择操作: " choice
case $choice in
1)
# 获取关机时间
read -p "请输入关机时间(格式 YYYY-MM-DD HH:MM): " shutdown_time
# 使用 pmset 命令
sudo pmset schedule shutdown "$shutdown_time"
# 或使用定时关机
read -p "请输入延迟分钟数: " delay_minutes
sudo shutdown -h +$delay_minutes
echo "系统将在 $delay_minutes 分钟后关机"
;;
2)
sudo pmset schedule cancelall
sudo killall shutdown
echo "已取消所有关机计划"
;;
3)
exit 0
;;
*)
echo "无效选择"
;;
esac
定时任务方式
Windows 任务计划程序(GUI 方式)
# 创建计划任务(需要管理员权限) schtasks /create /tn "AutoShutdown" /tr "shutdown /s /f" /sc once /st 23:00 /ru SYSTEM
Linux crontab
# 编辑 crontab crontab -e # 添加定时关机(每天23:00) 0 23 * * * /sbin/shutdown -h now # 或在指定时间关机 # 0 22 * * * shutdown -h now # 每天晚上10点
图形界面程序(Python + Tkinter)
import tkinter as tk
import subprocess
import sys
from datetime import datetime, timedelta
class AutoShutdownApp:
def __init__(self, root):
self.root = root
self.root.title("自动关机计划")
self.root.geometry("300x200")
# 界面元素
tk.Label(root, text="自动关机计划", font=("Arial", 14)).pack(pady=10)
tk.Label(root, text="延迟关机(分钟):").pack()
self.minutes = tk.Entry(root)
self.minutes.pack()
tk.Label(root, text="指定时间(HH:MM):").pack()
self.time = tk.Entry(root)
self.time.pack()
btn_frame = tk.Frame(root)
btn_frame.pack(pady=10)
tk.Button(btn_frame, text="设定时关机", command=self.schedule_shutdown,
bg="green", fg="white").pack(side=tk.LEFT, padx=5)
tk.Button(btn_frame, text="取消关机", command=self.cancel_shutdown,
bg="red", fg="white").pack(side=tk.LEFT, padx=5)
def schedule_shutdown(self):
try:
minutes = int(self.minutes.get())
if sys.platform.startswith('win'):
subprocess.run(['shutdown', '/s', '/t', str(minutes*60)])
tk.messagebox.showinfo("成功", f"将在{minutes}分钟后关机")
else:
subprocess.run(['sudo', 'shutdown', '+', str(minutes)])
tk.messagebox.showinfo("成功", f"将在{minutes}分钟后关机")
except:
tk.messagebox.showerror("错误", "请输入有效的分钟数")
def cancel_shutdown(self):
if sys.platform.startswith('win'):
subprocess.run(['shutdown', '/a'])
else:
subprocess.run(['sudo', 'shutdown', '-c'])
tk.messagebox.showinfo("成功", "已取消关机")
if __name__ == "__main__":
root = tk.Tk()
app = AutoShutdownApp(root)
root.mainloop()
使用说明
-
Windows:
- 保存为
.bat或.ps1文件 - 右键以管理员身份运行
- 保存为
-
Linux/macOS:
- 保存为
.sh文件 - 使用
chmod +x 脚本名添加执行权限 - 用
./脚本名运行
- 保存为
-
注意事项:
- 需要管理员/root权限
- 建议先测试脚本功能
- 设置关机前保存好工作
选择最适合您需求的脚本,保存后运行即可,如有特殊需求,我可以帮您调整。