Contents

[Autoit]詢問禮拜六日自動關機腳本

AutoIt 是一個專為 Windows 桌面自動化設計的腳本語言,可以模擬鍵盤輸入、滑鼠操作、視窗控制等,常用於自動化重複性的 Windows 操作流程。這個腳本的用途是在辦公室電腦上,讓電腦在週末(週六、週日)自動執行關機,節省學校電費,同時保留讓使用者取消的選項(以防萬一假日需要進來使用)。

AutoIt 簡介

AutoIt 腳本的副檔名為 .au3,可以使用 AutoIt 編譯器打包成獨立的 .exe 執行檔,不需要目標電腦安裝任何額外環境。

主要用途:

  • 自動化 GUI 應用程式操作
  • 排程任務和系統管理
  • 批次文件處理
  • 自動化測試

@WDAY 巨集說明

AutoIt 的 @WDAY 是一個內建巨集(Macro),回傳目前是星期幾的數字:

@WDAY 星期
1 星期日(Sunday)
2 星期一(Monday)
3 星期二(Tuesday)
4 星期三(Wednesday)
5 星期四(Thursday)
6 星期五(Friday)
7 星期六(Saturday)

因此,@WDAY == 1 代表週日,@WDAY == 7 代表週六。

腳本說明

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <Date.au3>

Func OpenProc()
    ; 這裡放正常開機後要執行的程式碼
    ; 例如:自動開啟公文系統、排程任務等
EndFunc

; 判斷是否為週六(7)或週日(1)
If @WDAY == 1 Or @WDAY == 7 Then
    ; 設定 600 秒(10分鐘)後關機
    Run("shutdown -s -f -t 600")
    Sleep(5)

    ; 彈出對話框詢問使用者是否繼續關機
    $goSutdown = MsgBox($MB_OKCANCEL, @WDAY, "今天是周休假日,程式自動執行關機,請問你是否繼續執行關機?")

    If $goSutdown = $IDCANCEL Then
        ; 使用者點擊「取消」→ 中止關機,執行正常程序
        Run("shutdown -a")
        OpenProc()
    EndIf

    ; 無論使用者選擇什麼,若按下 OK 則直接結束腳本
    Exit(1)
EndIf

; 非週末,正常執行程序
OpenProc()

腳本邏輯流程

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
啟動腳本
判斷 @WDAY 是否為 1(週日)或 7(週六)
    ↓ 是週末           ↓ 非週末
執行 shutdown 計時    直接執行 OpenProc()
顯示確認對話框(10分鐘倒計時中)
    ↓ 取消              ↓ 確定 或 逾時
shutdown -a           10分鐘後自動關機
執行 OpenProc()

Windows shutdown 指令說明

腳本中使用的 shutdown 參數:

參數 說明
-s 關機(Shutdown)
-f 強制關閉所有執行中的應用程式
-t 600 延遲 600 秒(10 分鐘)後執行
-a 中止已排程的關機

其他 AutoIt 常用功能

自動開啟應用程式

1
2
3
4
5
6
7
8
9
; 執行程式
Run("notepad.exe")
Run("C:\Program Files\MyApp\app.exe")

; 等待程式視窗出現
WinWait("記事本")

; 發送按鍵
Send("Hello World{ENTER}")

操作視窗

1
2
3
4
5
6
; 等待並啟動視窗
WinActivate("計算機")
WinWaitActive("計算機")

; 關閉視窗
WinClose("計算機")

滑鼠操作

1
2
3
4
5
6
; 移動滑鼠並點擊
MouseMove(100, 200)
MouseClick("left")

; 雙擊
MouseClick("left", 100, 200, 2)

顯示訊息框

1
2
3
4
5
6
7
8
; 一般訊息
MsgBox(0, "標題", "內容")

; OK/Cancel 對話框
$result = MsgBox(1, "確認", "是否繼續?")
If $result = 1 Then  ; 1 = OK
    ; 使用者按 OK
EndIf

自動執行設定

這個腳本的完整使用流程:

  1. 將腳本設定為開機自動執行(加入「工作排程器」或啟動資料夾)
  2. 電腦自動開機(在 BIOS 設定定時開機)
  3. 腳本啟動 → 判斷星期幾 → 週末自動關機,平日執行正常流程