戳下方名片 ,關註並 星標 !
回復「 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:因為公眾號平台更改了推播規則,如果不想錯過內容,記得讀完點一下 「 在看 」 ,加個 「 星標 」 ,這樣每次新文章推播才會第一時間出現在你的訂閱列表裏。 點 「 在看 」 支持我們吧!