教你編寫(xiě)Windows的VBScript與Mac的AppleSCript腳本解放雙手
一、Windows 篇 —— VBScript
最近發(fā)現(xiàn) windows 上有一個(gè)好玩的東西,叫做 VBScript,可以用來(lái)自動(dòng)執(zhí)行一些操作。
1、效果圖
先來(lái)看下最終效果吧!

以上就是一個(gè)簡(jiǎn)單的 VBS 腳本,運(yùn)行時(shí)自動(dòng)打開(kāi) Chrome 瀏覽器,然后自動(dòng)打開(kāi)了三個(gè)網(wǎng)頁(yè):我的博客,github,LeetCode官網(wǎng)。
這是筆者每天到公司啟動(dòng)電腦時(shí)都會(huì)開(kāi)的三個(gè)網(wǎng)頁(yè)。雖然保存了書(shū)簽,每次開(kāi)機(jī)也要點(diǎn)擊七八下,一兩天不覺(jué)得有什么,長(zhǎng)期下來(lái)筆者感到非常浪費(fèi)我的手指細(xì)胞!我的手指細(xì)胞是用來(lái)數(shù)錢(qián)的,可不是用來(lái)做重復(fù)工作的,這樣實(shí)在是太不程序員了。程序員就應(yīng)該把重復(fù)的事情交給電腦!于是筆者發(fā)現(xiàn)了 VBScript 這個(gè)好東西。
2、VBS 簡(jiǎn)介
從名字中的 Script 可以看出,它是一種腳本語(yǔ)言,所謂腳本,就是用來(lái)解放我們雙手的,讓我們用腳都可以編程!

——嗯,這段關(guān)于腳本的解釋純屬吹水,手動(dòng)狗頭防止小朋友誤解。
其實(shí)腳本的本意是劇本,讓程序按照開(kāi)發(fā)者寫(xiě)好的“劇本”開(kāi)始它的表演。
VBS 腳本是一種解釋型語(yǔ)言,解釋型語(yǔ)言的意思是它運(yùn)行的時(shí)候會(huì)自動(dòng)給電腦解釋代碼的意思,也就是不用安裝任何編譯環(huán)境,隨便咱們用什么軟件寫(xiě)都可以,比如記事本、word、Sublime、VSCode 啥的,只要保存成 vbs 文件即可單擊運(yùn)行。
3、代碼實(shí)現(xiàn)
本例代碼也很簡(jiǎn)單,新建一個(gè) vbs 文件,名字隨便取,比如 robot.vbs,編輯如下:
Set WshShell=WScript.CreateObject("WScript.Shell")
WshShell.Run """C:\Program Files (x86)\Google\Chrome\Application\chrome.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、代碼詳解
- 對(duì)于筆者這樣的帶有目的性學(xué)習(xí)的初學(xué)者,首尾兩行直接記作固定格式。
- WshShell.Run 用來(lái)運(yùn)行 exe 文件,將路徑換成自己電腦中想要運(yùn)行的軟件即可,用 三引號(hào) """ 的目的是明確告訴編輯器這是一個(gè)字符串,不需要轉(zhuǎn)義,防止路徑中有需要轉(zhuǎn)義的字符導(dǎo)致程序出錯(cuò)。這里我設(shè)置成了 chrome.exe 的位置。
- WScript.Sleep 3500 用來(lái)設(shè)置等待時(shí)間,3500 的意思是讓程序睡眠 3.5秒,后面的 WScript.Sleep 1500 同理,意思是讓程序睡眠 1.5 秒。如果你的程序啟動(dòng)較慢,可以將等待時(shí)間設(shè)置長(zhǎng)一點(diǎn)。
- WshShell.SendKeys 用來(lái)模擬鍵盤(pán)輸入,引號(hào)中的內(nèi)容就是輸入內(nèi)容??梢钥吹轿蚁容斎肓艘粋€(gè)網(wǎng)址。
- WshShell.SendKeys “{ENTER}” 表示輸入回車(chē),{ENTER} 是一個(gè)特殊字符,本文后面附有 VBS 特殊字符表格。這里輸入網(wǎng)址之后輸入了兩個(gè)回車(chē),原因是我這個(gè)不爭(zhēng)氣的搜狗輸入法在我一啟動(dòng) Chrome 的時(shí)候,它就設(shè)置成中文輸入,導(dǎo)致第一次回車(chē)只是把英文的文字打上去了,第二次回車(chē)才能跳轉(zhuǎn)到這個(gè)網(wǎng)站。
- 輸入了兩次回車(chē)后,我又讓腳本睡眠了 1.5秒,這行代碼完全是為了錄制那個(gè) gif 時(shí)好看一點(diǎn),不寫(xiě)的話會(huì)立即打開(kāi)三個(gè)網(wǎng)站,看不出漸次出現(xiàn)的感覺(jué)。刪了會(huì)更快,嗯,我寫(xiě)完這篇文章的時(shí)候已經(jīng)把它刪掉了。
- WshShell.SendKeys “^t” 表示同時(shí)按下 Ctrl + T,^表示 Ctrl 鍵,也屬于一個(gè)特殊字符,這里的 t 必須要小寫(xiě)!(咱也不知道為什么有這么蠢的語(yǔ)法設(shè)計(jì),坑了我五分鐘找原因)。Ctrl + T 是 Chrome 打開(kāi)新的標(biāo)簽頁(yè)快捷鍵,如果你的快捷鍵不一樣,可以對(duì)照特殊字符表自行修改。
OK,VBScript 大概就是這樣的了。其實(shí) VBS 的作用并不僅限于此,它可以用來(lái)模擬打開(kāi)程序,模擬鍵盤(pán)輸入,所以可以做出很多好玩的功能。比如筆者的同事寫(xiě)了一個(gè)自動(dòng)連接 Cisco 的腳本(每次都要手動(dòng)輸入密碼要吐了,現(xiàn)在終于被解放出來(lái)了),還可以用來(lái)自動(dòng)登錄 QQ、微信之類(lèi)的。感興趣的朋友們可以自行探索。
對(duì)多個(gè)程序的操作可以寫(xiě)在同一個(gè) vbs 文件里,只要在一個(gè)程序的自動(dòng)化腳本執(zhí)行結(jié)束后,再次調(diào)用 WshShell.Run 啟動(dòng)其他程序,就可以繼續(xù)操作其他程序了。筆者現(xiàn)在用的腳本效果有:
- 1.自動(dòng)打開(kāi) Chrome,并打開(kāi)三個(gè)常用網(wǎng)址
- 2.自動(dòng)打開(kāi) Typora,并輸入當(dāng)前日期生成標(biāo)題,這是我用來(lái)每天記錄工作日志的
- 3.啟動(dòng) Android Studio,筆者是一名 Android developer,這是用來(lái)工作的。
還有一些功能涉及工作內(nèi)容不方便透露,總之,想想每天到公司自己要做的初始化工作一鍵就能完成,是不是有點(diǎn)小激動(dòng)呢(=,=)
附上筆者現(xiàn)在使用的 vbs 腳本的一部分代碼:
Set WshShell=WScript.CreateObject("WScript.Shell")
' 啟動(dòng) Chrome,打開(kāi)常用網(wǎng)址
WshShell.Run """C:\Program Files (x86)\Google\Chrome\Application\chrome.exe"""
' 等待程序啟動(dòng)
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}"
' 每個(gè)程序的自動(dòng)化腳本結(jié)束后最好等待一會(huì),給腳本一點(diǎn)執(zhí)行時(shí)間,否則輸入過(guò)快可能會(huì)影響后面的程序
WScript.Sleep 3500
' 啟動(dòng) Typora
WshShell.Run """D:\ware\Typora\bin\typora.exe"""
WScript.Sleep 5000
' 獲取當(dāng)前日期的號(hào)數(shù)
dayString = day(now)
' 如果當(dāng)前日期的號(hào)數(shù)只有一位數(shù),前面補(bǔ) 0,湊成兩位。比如 01, 02, 03... 這樣做的目的是最終保存的時(shí)候格式更好看
if len(dayString) = 1 then dayString = "0"&dayString
' 格式化日期,這里生成的日期格式類(lèi)似于 2019-12-01
Currentdate = year(Now)&"-"&Month(Now)&"-"&dayString
' MarkDown 語(yǔ)法,輸入日期大標(biāo)題
WshShell.SendKeys "# "&Currentdate&"{Enter}"
' Ctrl + S 保存
WshShell.SendKeys "^s"
' 等待一秒讓保存彈窗彈出來(lái)
WScript.Sleep 1000
' 不斷發(fā)送 Tab 直到定位到輸入地址欄
WshShell.SendKeys "{TAB}"
WshShell.SendKeys "{TAB}"
WshShell.SendKeys "{TAB}"
WshShell.SendKeys "{TAB}"
WshShell.SendKeys "{TAB}"
WshShell.SendKeys "{TAB}"
WshShell.SendKeys "{ENTER}"
' 定位到地址欄后等待一秒,輸入過(guò)快可能會(huì)出錯(cuò)
WScript.Sleep 1000
' 輸入保存的地址
WshShell.SendKeys "D:\projects\github\DailyNotes"
' 等待以便輸入完成
WScript.Sleep 1000
WshShell.SendKeys "{ENTER}"
WshShell.SendKeys "{ENTER}"
' 輸入地址后保存彈窗會(huì)跳轉(zhuǎn)到地址所在文件夾,需要一點(diǎn)時(shí)間。這里需要根據(jù)實(shí)際情況調(diào)整按鍵
WScript.Sleep 1000
WshShell.SendKeys "{ENTER}"
WshShell.SendKeys "{ENTER}"
WScript.Sleep 1000
WshShell.SendKeys "{ENTER}"
WScript.Sleep 3500
' 啟動(dòng) Android Studio
WshShell.Run """D:\ware\AndroidStudio\bin\studio64.exe"""
' 更多初始化功能
' ...
WScript.Quit
5、其他語(yǔ)法
獲取當(dāng)前日期:
CurrentDate = date()
默認(rèn)的格式是月/日/年,也可以這樣自定義格式:
CurrentDate = year(Now)&"-"&Month(Now)&"-"&day(Now)
其中,CurrentDate 是變量名,名稱可以隨便起,&號(hào)用來(lái)連接字符串。
用彈窗彈出字符串
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 上也有類(lèi)似的腳本語(yǔ)言,叫做 AppleScript,打開(kāi) Mac 自帶的腳本編輯器即可使用。
1、效果圖
先看效果圖:

2、代碼實(shí)現(xiàn)
代碼很簡(jiǎn)單,打開(kāi) 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、代碼詳解
- AppleScript 的語(yǔ)法比較人性化,就像口語(yǔ)一樣,tell application “Safari” 表示告訴應(yīng)用 Safari。
- activate 意思是激活,也就是打開(kāi) Safari。
- tell window 1 意思是告訴當(dāng)前窗口
- set URL of current tab to “xxx” 表示將當(dāng)前 tab 頁(yè)的 URL 設(shè)置為 “xxx” 網(wǎng)址
- set current tab to (make new tab with properties {URL:“xxx”}) 表示新建一個(gè)標(biāo)簽頁(yè),并將其 URL 設(shè)置為 “xxx” 網(wǎng)址
- 每一個(gè) tell 對(duì)應(yīng)一個(gè) end tell,tell 中的內(nèi)容需要保持縮進(jìn)一致。
這就是 Windows 和 Mac 上各自的腳本工具,熟練運(yùn)用自動(dòng)化腳本,可以讓電腦更加的智能!
以上就是教你編寫(xiě)Windows的VBScript與Mac的AppleSCript腳本解放雙手的詳細(xì)內(nèi)容,更多關(guān)于Windows的VBScript與Mac的AppleSCrip的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
VBScript 中的字節(jié)數(shù)據(jù)操作函數(shù)
VBScript 中的字節(jié)數(shù)據(jù)操作函數(shù)...2006-06-06
VBS實(shí)現(xiàn)GB2312,UTF-8,Unicode,BIG5編碼轉(zhuǎn)換工具
VBS寫(xiě)的GB2312,UTF-8,Unicode,BIG5編碼轉(zhuǎn)換工具,轉(zhuǎn)換工具下載:GB2Ue.vbs (3.34 kb)2010-06-06
vbs實(shí)現(xiàn)只復(fù)制比目標(biāo)文件更新的文件
有時(shí)候我們需要時(shí)候備份一些文件,只有當(dāng)這個(gè)文件被修改了并且不是空的時(shí)候才復(fù)制2014-04-04
用VBS來(lái)代替BAT或CMD文件進(jìn)行命令
忽然想到要用VBS來(lái)代替BAT或CMD文件進(jìn)行命令集成,于是開(kāi)始下苦工學(xué)習(xí)了一番!在網(wǎng)上找了好久終于找到東西。2008-06-06
使用批處理文件異地備份數(shù)據(jù)庫(kù)(最近幾天的數(shù)據(jù))
數(shù)據(jù)庫(kù)異地備份對(duì)一個(gè)網(wǎng)站來(lái)說(shuō)是非常必要的,這里談一下使用批處理文件對(duì)數(shù)據(jù)庫(kù)異地本份的過(guò)程2006-06-06
一個(gè)擴(kuò)展時(shí)間段的dir命令的vbs腳本
CMD下的dir好像沒(méi)法列出從某段時(shí)間到某段時(shí)間的文件,所以寫(xiě)了這個(gè)小東東,方便根據(jù)我們的要求顯示數(shù)據(jù)2008-05-05
一個(gè)最簡(jiǎn)單的vbs類(lèi)實(shí)例代碼
下面的vbs類(lèi)雖然簡(jiǎn)單,但也看出來(lái),vbs類(lèi)的原理,大家可以根據(jù)自己的需要編寫(xiě)2008-05-05

