首頁 > 軟體

教你編寫Windows的VBScript與Mac的AppleSCript指令碼解放雙手

2022-02-09 13:01:01

一、Windows 篇 —— VBScript

最近發現 windows 上有一個好玩的東西,叫做 VBScript,可以用來自動執行一些操作。

1、效果圖

先來看下最終效果吧!

以上就是一個簡單的 VBS 指令碼,執行時自動開啟 Chrome 瀏覽器,然後自動開啟了三個網頁:我的部落格,github,LeetCode官網。

這是筆者每天到公司啟動電腦時都會開的三個網頁。雖然儲存了書籤,每次開機也要點選七八下,一兩天不覺得有什麼,長期下來筆者感到非常浪費我的手指細胞!我的手指細胞是用來數錢的,可不是用來做重複工作的,這樣實在是太不程式設計師了。程式設計師就應該把重複的事情交給電腦!於是筆者發現了 VBScript 這個好東西。

2、VBS 簡介

從名字中的 Script 可以看出,它是一種指令碼語言,所謂指令碼,就是用來解放我們雙手的,讓我們用腳都可以程式設計!

——嗯,這段關於指令碼的解釋純屬吹水,手動狗頭防止小朋友誤解。

其實指令碼的本意是劇本,讓程式按照開發者寫好的“劇本”開始它的表演。

VBS 指令碼是一種直譯語言,直譯語言的意思是它執行的時候會自動給電腦解釋程式碼的意思,也就是不用安裝任何編譯環境,隨便咱們用什麼軟體寫都可以,比如記事本、word、Sublime、VSCode 啥的,只要儲存成 vbs 檔案即可單擊執行。

3、程式碼實現

本例程式碼也很簡單,新建一個 vbs 檔案,名字隨便取,比如 robot.vbs,編輯如下:

Set WshShell=WScript.CreateObject("WScript.Shell")
WshShell.Run """C:Program Files (x86)GoogleChromeApplicationchrome.exe"""
WScript.Sleep 3500
WshShell.SendKeys "https://blog.csdn.net/AlpinistWang"
WshShell.SendKeys "{ENTER}"
WshShell.SendKeys "{ENTER}"
WScript.Sleep 1500
WshShell.SendKeys "^t"
WshShell.SendKeys "https://github.com"
WshShell.SendKeys "{ENTER}"
WshShell.SendKeys "{ENTER}"
WScript.Sleep 1500
WshShell.SendKeys "^t"
WshShell.SendKeys "https://leetcode-cn.com"
WshShell.SendKeys "{ENTER}"
WshShell.SendKeys "{ENTER}"
WScript.Quit

4、程式碼詳解

  1. 對於筆者這樣的帶有目的性學習的初學者,首尾兩行直接記作固定格式。
  2. WshShell.Run 用來執行 exe 檔案,將路徑換成自己電腦中想要執行的軟體即可,用 三引號 """ 的目的是明確告訴編輯器這是一個字串,不需要跳脫,防止路徑中有需要跳脫的字元導致程式出錯。這裡我設定成了 chrome.exe 的位置。
  3. WScript.Sleep 3500 用來設定等待時間,3500 的意思是讓程式睡眠 3.5秒,後面的 WScript.Sleep 1500 同理,意思是讓程式睡眠 1.5 秒。如果你的程式啟動較慢,可以將等待時間設定長一點。
  4. WshShell.SendKeys 用來模擬鍵盤輸入,引號中的內容就是輸入內容。可以看到我先輸入了一個網址。
  5. WshShell.SendKeys “{ENTER}” 表示輸入回車,{ENTER} 是一個特殊字元,本文後面附有 VBS 特殊字元表格。這裡輸入網址之後輸入了兩個回車,原因是我這個不爭氣的搜狗輸入法在我一啟動 Chrome 的時候,它就設定成中文輸入,導致第一次回車只是把英文的文字打上去了,第二次回車才能跳轉到這個網站。
  6. 輸入了兩次回車後,我又讓指令碼睡眠了 1.5秒,這行程式碼完全是為了錄製那個 gif 時好看一點,不寫的話會立即開啟三個網站,看不出漸次出現的感覺。刪了會更快,嗯,我寫完這篇文章的時候已經把它刪掉了。
  7. WshShell.SendKeys “^t” 表示同時按下 Ctrl + T,^表示 Ctrl 鍵,也屬於一個特殊字元,這裡的 t 必須要小寫!(咱也不知道為什麼有這麼蠢的語法設計,坑了我五分鐘找原因)。Ctrl + T 是 Chrome 開啟新的分頁快捷鍵,如果你的快捷鍵不一樣,可以對照特殊字元表自行修改。

OK,VBScript 大概就是這樣的了。其實 VBS 的作用並不僅限於此,它可以用來模擬開啟程式,模擬鍵盤輸入,所以可以做出很多好玩的功能。比如筆者的同事寫了一個自動連線 Cisco 的指令碼(每次都要手動輸入密碼要吐了,現在終於被解放出來了),還可以用來自動登入 QQ、微信之類的。感興趣的朋友們可以自行探索。

對多個程式的操作可以寫在同一個 vbs 檔案裡,只要在一個程式的自動化指令碼執行結束後,再次呼叫 WshShell.Run 啟動其他程式,就可以繼續操作其他程式了。筆者現在用的指令碼效果有:

  • 1.自動開啟 Chrome,並開啟三個常用網址
  • 2.自動開啟 Typora,並輸入當前日期生成標題,這是我用來每天記錄工作紀錄檔的
  • 3.啟動 Android Studio,筆者是一名 Android developer,這是用來工作的。

還有一些功能涉及工作內容不方便透露,總之,想想每天到公司自己要做的初始化工作一鍵就能完成,是不是有點小激動呢(=,=)
附上筆者現在使用的 vbs 指令碼的一部分程式碼:

Set WshShell=WScript.CreateObject("WScript.Shell")
' 啟動 Chrome,開啟常用網址 
WshShell.Run """C:Program Files (x86)GoogleChromeApplicationchrome.exe"""
' 等待程式啟動
WScript.Sleep 3500
WshShell.SendKeys "https://blog.csdn.net/AlpinistWang"
WshShell.SendKeys "{ENTER}"
WshShell.SendKeys "{ENTER}"
WshShell.SendKeys "^t"
WshShell.SendKeys "https://github.com"
WshShell.SendKeys "{ENTER}"
WshShell.SendKeys "{ENTER}"
WshShell.SendKeys "^t"
WshShell.SendKeys "https://leetcode-cn.com"
WshShell.SendKeys "{ENTER}"
WshShell.SendKeys "{ENTER}"
' 每個程式的自動化指令碼結束後最好等待一會,給指令碼一點執行時間,否則輸入過快可能會影響後面的程式
WScript.Sleep 3500
' 啟動 Typora
WshShell.Run """D:wareTyporabintypora.exe"""
WScript.Sleep 5000
' 獲取當前日期的號數
dayString = day(now)
' 如果當前日期的號數只有一位數,前面補 0,湊成兩位。比如 01, 02, 03... 這樣做的目的是最終儲存的時候格式更好看
if len(dayString) = 1 then dayString = "0"&dayString
' 格式化日期,這裡生成的日期格式類似於 2019-12-01
Currentdate = year(Now)&"-"&Month(Now)&"-"&dayString
' MarkDown 語法,輸入日期大標題
WshShell.SendKeys "# "&Currentdate&"{Enter}"
' Ctrl + S 儲存
WshShell.SendKeys "^s"
' 等待一秒讓儲存彈窗彈出來
WScript.Sleep 1000
' 不斷傳送 Tab 直到定位到輸入位址列
WshShell.SendKeys "{TAB}"
WshShell.SendKeys "{TAB}"
WshShell.SendKeys "{TAB}"
WshShell.SendKeys "{TAB}"
WshShell.SendKeys "{TAB}"
WshShell.SendKeys "{TAB}"
WshShell.SendKeys "{ENTER}"
' 定位到位址列後等待一秒,輸入過快可能會出錯
WScript.Sleep 1000
' 輸入儲存的地址
WshShell.SendKeys "D:projectsgithubDailyNotes"
' 等待以便輸入完成
WScript.Sleep 1000
WshShell.SendKeys "{ENTER}"
WshShell.SendKeys "{ENTER}"
' 輸入地址後儲存彈窗會跳轉到地址所在資料夾,需要一點時間。這裡需要根據實際情況調整按鍵
WScript.Sleep 1000
WshShell.SendKeys "{ENTER}"
WshShell.SendKeys "{ENTER}"
WScript.Sleep 1000
WshShell.SendKeys "{ENTER}"
WScript.Sleep 3500
' 啟動 Android Studio
WshShell.Run """D:wareAndroidStudiobinstudio64.exe"""

' 更多初始化功能
' ...
WScript.Quit

5、其他語法

獲取當前日期:

CurrentDate = date()

預設的格式是月/日/年,也可以這樣自定義格式:

CurrentDate = year(Now)&"-"&Month(Now)&"-"&day(Now)

其中,CurrentDate 是變數名,名稱可以隨便起,&號用來連線字串。

用彈窗彈出字串

msgbox "字串"

6、附:VBS 特殊字元表格

特殊字元VBS 表示
SHIFT+
CTRL^
ALT%
退格鍵{BACKSPACE} 或 {BS} 或 {BKSP}
BREAK{BREAK}
Delete{Delete} 或 {DEL}
向下鍵{DOWN}
向上鍵{UP}
向左鍵{LEFT}
向右鍵{RIGHT}
END{END}
ENTER{ENTER} 或 ~
ESC{ESC}
TAB{TAB}
CAPS LOCK{CAPSLOCK}
HELP{HELP}
HOME{HOME}
Insert{Insert} 或 {INS}
NUM LOCK{NUMLOCK}
PAGE DOWN{PGDN}
PAGE UP{PGUP}
PRINT SCREEN{PRTSC}
SCROLL LOCK{SCROLLLOCK}
F1{F1}
F2{F2}
F12{F12}

二、Mac 篇 —— AppleScript

Mac 上也有類似的指令碼語言,叫做 AppleScript,開啟 Mac 自帶的指令碼編輯器即可使用。

1、效果圖

先看效果圖:

2、程式碼實現

程式碼很簡單,開啟 Mac 自帶的指令碼編輯器,編輯如下:

tell application "Safari"
	activate
	tell window 1
		set URL of current tab to "https://blog.csdn.net/AlpinistWang"
		set current tab to (make new tab with properties {URL:"http://www.github.com"})
		set current tab to (make new tab with properties {URL:"https://leetcode-cn.com"})
	end tell
end tell

3、程式碼詳解

  1. AppleScript 的語法比較人性化,就像口語一樣,tell application “Safari” 表示告訴應用 Safari。
  2. activate 意思是啟用,也就是開啟 Safari。
  3. tell window 1 意思是告訴當前視窗
  4. set URL of current tab to “xxx” 表示將當前 tab 頁的 URL 設定為 “xxx” 網址
  5. set current tab to (make new tab with properties {URL:“xxx”}) 表示新建一個分頁,並將其 URL 設定為 “xxx” 網址
  6. 每一個 tell 對應一個 end tell,tell 中的內容需要保持縮排一致。

這就是 Windows 和 Mac 上各自的指令碼工具,熟練運用自動化指令碼,可以讓電腦更加的智慧!

以上就是教你編寫Windows的VBScript與Mac的AppleSCript指令碼解放雙手的詳細內容,更多關於Windows的VBScript與Mac的AppleSCrip的資料請關注it145.com其它相關文章!


IT145.com E-mail:sddin#qq.com