首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Windows 使用 at 命令排程自動關機批次腳本

     編輯:Java 相關知識

前言

原標題為「Java 發送郵件」,但實際內容是 Windows 批次檔利用 at 命令排程關機。本文整理該腳本邏輯,說明如何設定每日/每週定時關機,並提供更現代的替代方案。

原始腳本分析

@echo off
if not "%times%"=="" (
    for %%i in (%times%) do (
        at %%i /every:M,T,W,Th,F,S,Su shutdown -s
    )
)
  • %times%:預期為外部傳入的時間參數,格式如 22:00 或 22:00,06:00
  • /every:M,T,W,Th,F,S,Su:每週一至日皆執行
  • shutdown -s:關機命令

實際使用範例

1. 直接在 CMD 執行單次排程

at 22:30 shutdown -s

在今天 22:30 執行關機。

2. 批次檔接受參數實現多時段排程

建立 auto_shutdown.bat:

@echo off
setlocal enabledelayedexpansion

if "%~1"=="" (
    echo 用法: auto_shutdown.bat "時間1,時間2,..."
    echo 範例: auto_shutdown.bat "22:00,06:30"
    exit /b
)

set "times=%~1"
for %%t in (%times%) do (
    echo 排程關機時間: %%t
    at %%t /every:M,T,W,Th,F,S,Su shutdown -s
)

echo 已建立排程任務,使用 "at" 指令查看,"at /delete /yes" 刪除所有。

執行:auto_shutdown.bat "23:00,07:00"

查看與管理排程

at                列出所有排程任務
at 1              顯示 ID 1 的任務詳情
at 1 /delete      刪除 ID 1
at /delete /yes   刪除所有任務 (需確認)

⚠️ 重要限制與現代替代方案

at 命令限制

  • **Windows 8/10/11 已棄用** at,改用 schtasks 或工作排程器 GUI
  • 需**管理員權限**執行 CMD
  • 若系統時間/時區變更,排程可能異常
  • 無法指定「僅工作日」等複雜邏輯 (需手動列出 M,T,W,Th,F)

推薦:schtasks (現代標準)

schtasks /create /tn "AutoShutdown" /tr "shutdown -s" /sc daily /st 22:30 /ru SYSTEM /rl HIGHEST
  • /sc daily:每日;/sc weekly 每週;/sc monthly 每月
  • /st 22:30:開始時間
  • /ru SYSTEM:以系統帳號執行 (無需登入)
  • /rl HIGHEST:最高權限

圖形介面:工作排程器

  1. Win+S 搜尋「工作排程器」
  2. 建立基本工作 → 觸發條件選「每日」/「每週」 → 動作「啟動程式」
  3. 程式:shutdown.exe,引數:-s -t 0
  4. 完成後可在程式庫中查看、編輯、停用

關機命令參數補充

shutdown -s        關機
shutdown -r        重新開機
shutdown -h        休眠
shutdown -t 60     60 秒後執行 (預設 30 秒)
shutdown -a        取消已排程的關機/重開機
shutdown -f        強制關閉應用程式 (配合 -s 使用)

總結

雖然 at 命令簡單,但已被淘汰。生產環境請使用 schtasks 或 **工作排程器 GUI**,功能更強、相容性更好、支援匯出/匯入 XML 實現基礎設施即代碼 (IaC)。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved