如何写一个自动关机计划脚本

wen 实用脚本 1

本文目录导读:

如何写一个自动关机计划脚本

  1. Windows 系统
  2. Linux 系统
  3. macOS 系统
  4. 定时任务方式
  5. 图形界面程序(Python + Tkinter)
  6. 使用说明

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()

使用说明

  1. Windows:

    • 保存为 .bat.ps1 文件
    • 右键以管理员身份运行
  2. Linux/macOS:

    • 保存为 .sh 文件
    • 使用 chmod +x 脚本名 添加执行权限
    • ./脚本名 运行
  3. 注意事项:

    • 需要管理员/root权限
    • 建议先测试脚本功能
    • 设置关机前保存好工作

选择最适合您需求的脚本,保存后运行即可,如有特殊需求,我可以帮您调整。

抱歉,评论功能暂时关闭!