當前位置: 妍妍網 > 碼農

早知道有這麽個吊炸天的開源自動化神器,我就不用其它工具了!

2024-03-06碼農

戳下方名片 ,關註並 星標

回復「 1024 」獲取 2TB 學習資源!

👉 體系化學習:

特色專欄

/ /

/ /

/ /

/ /

/ /

大家好,我是民工哥!

眾所周知,程式設計師的日常工作很多都是重復性的,這樣的工作內容會大大降低我們日常工作效率。所以,一款高效的自動化工具,絕對是我們日常工作的好幫手。

今天,民工哥給大家推薦一款功能強大的自動化神器: AutoIt !幫助我們自動執行各種 Windows GUI 操作,提高工作效率。

AutoIt 簡介

AutoIt 是一個使用類似 BASIC 手稿語言的免費軟體(自動化手稿語言和工具集),設計用於 Windows GUI(圖形化使用者介面)中進行自動化操作。它利用模擬鍵盤按鍵、滑鼠移動和視窗/控制項的組合來實作自動化任務。

AutoIt 最初是為了模擬鍵盤和滑鼠輸入,以便自動執行重復性的任務,如安裝軟體、配置系統設定等。隨著時間的推移, AutoIt 發展成為一個功能強大的手稿語言, 支持各種 Windows 作業系統的自動化任務。它還具有數據抓取和處理、系統管理等功能。

AutoIt 功能介紹

  • 自動化指令碼編寫 :AutoIt提供了一種類似於BASIC的手稿語言,使用者可以使用該語言編寫自動化指令碼,實作各種Windows GUI操作,如模擬滑鼠點選、鍵盤輸入、視窗控制等。

  • 自動化任務執行 :透過AutoIt指令碼,使用者可以自動執行一系列任務,例如自動安裝軟體、配置系統設定、執行批次檔等。

  • 視窗和控制項操作 :AutoIt支持對Windows視窗和控制項進行操作,例如最小化視窗、關閉視窗、獲取控制項文本等。

  • 數據處理 :AutoIt可以處理各種數據,包括字串、數位、日期等,支持數據型別轉換、字串操作等。

  • 系統管理 :AutoIt可以存取和修改Windows登錄檔項、存取系統路徑等,還可以與檔案系統進行互動。

  • 偵錯和日誌記錄 :AutoIt提供了偵錯工具和日誌記錄功能,方便使用者偵錯指令碼和記錄指令碼執行過程。

  • 編譯和執行 :AutoIt可以將指令碼編譯成可執行檔,以便在沒有AutoIt直譯器的情況下執行指令碼。

  • AutoIt的優點

    AutoIt的優點包括:

  • 簡單易學:語法類似於BASIC語言,非常容易上手,初學者也能快速掌握。

  • 功能強大:AutoIt 提供了豐富的功能和工具集,包括視窗操作、檔處理、數據型別處理、系統管理等,滿足了使用者各種自動化需求。

  • 指令碼執行速度快:相較於其它同類工具,AutoIt的指令碼執行速度非常快,從而極大的提高了自動化任務的執行效率。

  • 多系統版本支持:AutoIt可以執行在多種Windows系統上。

  • 社群支持:社群活躍,使用者問題求助、經驗交流都非常方便,同時還能及時獲取最新的指令碼和工具。

  • 免費開源:免費開源,使用者可以自由使用、修改和分發AutoIt及其指令碼。

  • 安全性:AutoIt手稿語言是解釋執行的,相比於直接在系統上執行自動化任務,安全性更高。

  • 安裝使用

    安裝

    存取官方網站: https://www.autoitscript.com/site/autoit/downloads/ 選擇合適的版本下載。

    直接安裝即可

    手冊

    內建的指令碼工具:提取視窗資訊

    功能使用

    指令碼編輯

    語法高亮

    程式碼折疊

    自動執行

    指令碼範例

    以下是一些常見的AutoIt指令碼範例:

    模擬鍵盤按鍵:

    Send("Hello World") ; 發送"Hello World"到當前活動視窗

    模擬滑鼠點選:

    Click("OK") ; 在當前視窗中點選"OK"按鈕

    獲取視窗標題:

    $title = WinGetTitle("[ACTIVE]") ; 獲取當前活動視窗的標題,並儲存在變量$title
    MsgBox(0, "Window Title"$title) ; 顯示一個訊息方塊,顯示視窗標題

    關閉視窗:

    WinClose("[ class:Notepad]") ; 關閉所有Notepad視窗

    獲取文字域內容:

    $text = EditGetText("[ class:Edit]") ; 獲取當前文字域中的文本,並儲存在變量$text
    MsgBox(0, "Text"$text) ; 顯示一個訊息方塊,顯示文本內容

    自動化安裝軟體的指令碼範例

    #include <Windows.h>
    #include <WinUser.au3>
    ; 設定安裝程式檔路徑
    $setupExe = "C:\Path\To\Setup.exe"
    ; 啟動安裝程式
    Run($setupExe)
    ; 等待安裝程式啟動
    WinWaitActive("[ class:Installer]")
    ; 點選"Next"按鈕
    Click("Next")
    ; 等待授權合約界面載入完成
    WinWaitActive("[TITLE:License Agreement]")
    ; 輸入授權證金鑰,並點選"Next"按鈕
    $licenseKey = "1234567890"
    Send($licenseKey)
    Click("Next")
    ; 等待安裝型別界面載入完成
    WinWaitActive("[TITLE:Choose Setup Type]")
    ; 選擇安裝型別,並點選"Next"按鈕
    Click("Complete")
    Click("Next")
    ; 等待選擇目的檔夾界面載入完成
    WinWaitActive("[TITLE:Destination Folder]")
    ; 輸入目的檔夾路徑,並點選"Next"按鈕
    $folder = "C:\Program Files\MyApp"
    Send($folder)
    Click("Next")
    ; 等待準備安裝界面載入完成
    WinWaitActive("[TITLE:Ready to Install]")
    ; 點選"Install"按鈕,開始安裝過程
    Click("Install")
    ; 等待安裝過程完成
    WinWaitActive("[TITLE:Installer - Completing the MyApp Setup]")
    ; 點選"Finish"按鈕,完成安裝
    Click("Finish")












    抓取網頁數據的指令碼範例

    #include <IE.au3>
    ; 開啟網頁
    $ie = _IECreate("https://www.example.com", 3) ; 開啟指定網址的網頁,視窗控制代碼為3
    ; 等待網頁載入完成
    _IENavigate($ie"https://www.example.com")
    WinWaitActive("[ class:Internet Explorer_Server]")
    ; 獲取網頁標題
    $title = _IEPropertyGet($ie"title")
    MsgBox(0, "Title"$title) ; 顯示網頁標題的對話方塊
    ; 獲取網頁原始碼
    $source = _IEPropertyGet($ie"document.body.innerHTML")
    MsgBox(0, "Source Code"$source) ; 顯示網頁原始碼的對話方塊
    ; 關閉網頁
    _IEClose($ie)



    系統管理任務的範例
    自動備份檔

    #include <File.au3>
    ; 定義備份路徑和檔名
    $backupDir = "C:\Backup"
    $fileName = "My Documents.bak"
    ; 建立備份資料夾
    DirCreate($backupDir)
    ; 獲取當前日期時間,用於檔名
    $currentDateTime = TimeGet()
    ; 構建備份檔路徑和名稱
    $backupPath = $backupDir & "\" & $currentDateTime & "_" & $fileName
    ; 備份檔
    FileCopy("
    C:\My Documents", $backupPath)
    ; 檢查備份是否成功
    If @error Then
    MsgBox(16, "
    Error", "Backup failed!")
    Else
    MsgBox(0, "
    Success", "Backup completed successfully!")
    EndIf




    這個指令碼將自動備份"C:\My Documents"資料夾到指定的備份目錄,並將備份檔命名為當前日期時間。如果備份成功,將顯示成功訊息,否則將顯示錯誤訊息。

    清理臨時檔

    #include <File.au3>
    #include <MsgBox.au3>
    ; 定義臨時檔目錄和要保留的天數
    $tempDir = "C:\Temp"
    $daysToKeep = 7
    ; 獲取當前日期時間,用於比較日期
    $currentDateTime = TimeGet()
    $cutoffDateTime = DateAdd("d", -$daysToKeep$currentDateTime)
    ; 迴圈遍歷臨時資料夾中的檔,檢查是否需要清理
    DirSet($tempDir)
    $fileList = FileListGet()
    For $i = 0 To $fileList[$iCount - 1] ; 索引從0開始,直到最後一個檔
    $fileTime = FileGetAttrib($tempDir & "\" & $fileList[$i]) ; 獲取檔內容,包括修改時間
    If $fileTime < $cutoffDateTime Then ; 如果檔的修改時間早於保留期限,則刪除檔
    FileDelete($tempDir & "
    \" & $fileList[$i]) ; 刪除檔
    MsgBox(0, "Cleanup""Deleted file: " & $fileList[$i]) ; 顯示已刪除的檔名
    EndIf
    Next

    這個指令碼將清理指定目錄(例如"C:\Temp")中早於指定天數(例如7天)的臨時檔。它將遍歷目錄中的所有檔,檢查檔的修改時間,如果檔的修改時間早於保留期限,則刪除該檔。每次刪除檔時,將顯示一個訊息方塊,顯示已刪除的檔名。

    定時執行特定任務

    使用AutoIt的WinWait和WinActive函式可以檢測視窗的啟用狀態,並根據條件執行特定任務。例如,以下指令碼將等待特定視窗(例如"記事本")被啟用,然後在其上執行雙擊操作:

    #include <Windows.au3>
    #include <MsgBox.au3>
    ; 等待"記事本"視窗被啟用並點選滑鼠左鍵一次(雙擊)操作需要兩個步驟來完成,所以使用兩個WinWaitActive函式和兩個Click函式來實作雙擊操作。
    WinWaitActive("[ class:Notepad]") ; 等待"記事本"視窗被啟用
    Click("Notepad") ; 在"記事本"視窗上點選滑鼠左鍵一次(第一次點選)
    WinWaitActive("[ class:Notepad]") ; 等待"記事本"視窗再次被啟用(雙擊操作間隔)
    Click("Notepad") ; 在"記事本"視窗上再次點選滑鼠左鍵一次(第二次點選)以完成雙擊操作。

    AutoIt 使用場景介紹

    AutoIt的使用場景非常廣泛,以下是幾個常見的使用場景:

  • 軟體自動化測試:AutoIt可以用於編寫自動化測試指令碼,模擬使用者在軟體界面上的操作,對軟體進行測試和驗證。

  • 系統設定和部署:透過AutoIt指令碼,可以對Windows系統進行自動化配置和部署,例如自動安裝軟體、配置網路設定等。

  • 批次處理:AutoIt可以用於編寫批次處理指令碼,對大量數據進行自動化處理和分析,例如數據抓取、檔批次重新命名等。

  • 自動化辦公:AutoIt可以用於編寫自動化指令碼,實作辦公任務的自動化,例如自動填寫表單、數據錄入等。

  • 遊戲輔助工具:AutoIt可以用於編寫遊戲輔助指令碼,例如自動瞄準、自動施法等。

  • 總結

    總的來說,AutoIt 簡單易學、功能強大、執行速度快、跨平台、社群支持、免費開源和安全性高等特點。這些優點使得 AutoIt 成為一款非常受歡迎的自動化工具,廣泛套用於各種 Windows GUI 操作的自動化任務中。

    公眾號讀者專屬技術群

    構建高品質的技術交流社群,歡迎從事後端開發、運維技術進群( 備註崗位,已在技術交流群的請勿重復添加微信好友 )。主要以技術交流、內推、行業探討為主,請文明發言。 廣告人士勿入,切勿輕信私聊,防止被騙。

    掃碼加我好友,拉你進群

    PS:因為公眾號平台更改了推播規則,如果不想錯過內容,記得讀完點一下 在看 ,加個 星標 ,這樣每次新文章推播才會第一時間出現在你的訂閱列表裏。 在看 支持我們吧!