教你編寫Windows的VBScript與Mac的AppleSCript腳本解放雙手
一、Windows 篇 —— VBScript
最近發(fā)現(xiàn) windows 上有一個好玩的東西,叫做 VBScript,可以用來自動執(zhí)行一些操作。
1、效果圖
先來看下最終效果吧!
以上就是一個簡單的 VBS 腳本,運行時自動打開 Chrome 瀏覽器,然后自動打開了三個網(wǎng)頁:我的博客,github,LeetCode官網(wǎng)。
這是筆者每天到公司啟動電腦時都會開的三個網(wǎng)頁。雖然保存了書簽,每次開機也要點擊七八下,一兩天不覺得有什么,長期下來筆者感到非常浪費我的手指細胞!我的手指細胞是用來數(shù)錢的,可不是用來做重復(fù)工作的,這樣實在是太不程序員了。程序員就應(yīng)該把重復(fù)的事情交給電腦!于是筆者發(fā)現(xiàn)了 VBScript 這個好東西。
2、VBS 簡介
從名字中的 Script 可以看出,它是一種腳本語言,所謂腳本,就是用來解放我們雙手的,讓我們用腳都可以編程!
——嗯,這段關(guān)于腳本的解釋純屬吹水,手動狗頭防止小朋友誤解。
其實腳本的本意是劇本,讓程序按照開發(fā)者寫好的“劇本”開始它的表演。
VBS 腳本是一種解釋型語言,解釋型語言的意思是它運行的時候會自動給電腦解釋代碼的意思,也就是不用安裝任何編譯環(huán)境,隨便咱們用什么軟件寫都可以,比如記事本、word、Sublime、VSCode 啥的,只要保存成 vbs 文件即可單擊運行。
3、代碼實現(xiàn)
本例代碼也很簡單,新建一個 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、代碼詳解
- 對于筆者這樣的帶有目的性學(xué)習(xí)的初學(xué)者,首尾兩行直接記作固定格式。
- WshShell.Run 用來運行 exe 文件,將路徑換成自己電腦中想要運行的軟件即可,用 三引號 """ 的目的是明確告訴編輯器這是一個字符串,不需要轉(zhuǎn)義,防止路徑中有需要轉(zhuǎn)義的字符導(dǎo)致程序出錯。這里我設(shè)置成了 chrome.exe 的位置。
- WScript.Sleep 3500 用來設(shè)置等待時間,3500 的意思是讓程序睡眠 3.5秒,后面的 WScript.Sleep 1500 同理,意思是讓程序睡眠 1.5 秒。如果你的程序啟動較慢,可以將等待時間設(shè)置長一點。
- WshShell.SendKeys 用來模擬鍵盤輸入,引號中的內(nèi)容就是輸入內(nèi)容??梢钥吹轿蚁容斎肓艘粋€網(wǎng)址。
- WshShell.SendKeys “{ENTER}” 表示輸入回車,{ENTER} 是一個特殊字符,本文后面附有 VBS 特殊字符表格。這里輸入網(wǎng)址之后輸入了兩個回車,原因是我這個不爭氣的搜狗輸入法在我一啟動 Chrome 的時候,它就設(shè)置成中文輸入,導(dǎo)致第一次回車只是把英文的文字打上去了,第二次回車才能跳轉(zhuǎn)到這個網(wǎng)站。
- 輸入了兩次回車后,我又讓腳本睡眠了 1.5秒,這行代碼完全是為了錄制那個 gif 時好看一點,不寫的話會立即打開三個網(wǎng)站,看不出漸次出現(xiàn)的感覺。刪了會更快,嗯,我寫完這篇文章的時候已經(jīng)把它刪掉了。
- WshShell.SendKeys “^t” 表示同時按下 Ctrl + T,^表示 Ctrl 鍵,也屬于一個特殊字符,這里的 t 必須要小寫?。ㄔ垡膊恢罏槭裁从羞@么蠢的語法設(shè)計,坑了我五分鐘找原因)。Ctrl + T 是 Chrome 打開新的標(biāo)簽頁快捷鍵,如果你的快捷鍵不一樣,可以對照特殊字符表自行修改。
OK,VBScript 大概就是這樣的了。其實 VBS 的作用并不僅限于此,它可以用來模擬打開程序,模擬鍵盤輸入,所以可以做出很多好玩的功能。比如筆者的同事寫了一個自動連接 Cisco 的腳本(每次都要手動輸入密碼要吐了,現(xiàn)在終于被解放出來了),還可以用來自動登錄 QQ、微信之類的。感興趣的朋友們可以自行探索。
對多個程序的操作可以寫在同一個 vbs 文件里,只要在一個程序的自動化腳本執(zhí)行結(jié)束后,再次調(diào)用 WshShell.Run 啟動其他程序,就可以繼續(xù)操作其他程序了。筆者現(xiàn)在用的腳本效果有:
- 1.自動打開 Chrome,并打開三個常用網(wǎng)址
- 2.自動打開 Typora,并輸入當(dāng)前日期生成標(biāo)題,這是我用來每天記錄工作日志的
- 3.啟動 Android Studio,筆者是一名 Android developer,這是用來工作的。
還有一些功能涉及工作內(nèi)容不方便透露,總之,想想每天到公司自己要做的初始化工作一鍵就能完成,是不是有點小激動呢(=,=)
附上筆者現(xiàn)在使用的 vbs 腳本的一部分代碼:
Set WshShell=WScript.CreateObject("WScript.Shell") ' 啟動 Chrome,打開常用網(wǎng)址 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}" 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}" ' 每個程序的自動化腳本結(jié)束后最好等待一會,給腳本一點執(zhí)行時間,否則輸入過快可能會影響后面的程序 WScript.Sleep 3500 ' 啟動 Typora WshShell.Run """D:\ware\Typora\bin\typora.exe""" WScript.Sleep 5000 ' 獲取當(dāng)前日期的號數(shù) dayString = day(now) ' 如果當(dāng)前日期的號數(shù)只有一位數(shù),前面補 0,湊成兩位。比如 01, 02, 03... 這樣做的目的是最終保存的時候格式更好看 if len(dayString) = 1 then dayString = "0"&dayString ' 格式化日期,這里生成的日期格式類似于 2019-12-01 Currentdate = year(Now)&"-"&Month(Now)&"-"&dayString ' MarkDown 語法,輸入日期大標(biāo)題 WshShell.SendKeys "# "&Currentdate&"{Enter}" ' Ctrl + S 保存 WshShell.SendKeys "^s" ' 等待一秒讓保存彈窗彈出來 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}" ' 定位到地址欄后等待一秒,輸入過快可能會出錯 WScript.Sleep 1000 ' 輸入保存的地址 WshShell.SendKeys "D:\projects\github\DailyNotes" ' 等待以便輸入完成 WScript.Sleep 1000 WshShell.SendKeys "{ENTER}" WshShell.SendKeys "{ENTER}" ' 輸入地址后保存彈窗會跳轉(zhuǎn)到地址所在文件夾,需要一點時間。這里需要根據(jù)實際情況調(diào)整按鍵 WScript.Sleep 1000 WshShell.SendKeys "{ENTER}" WshShell.SendKeys "{ENTER}" WScript.Sleep 1000 WshShell.SendKeys "{ENTER}" WScript.Sleep 3500 ' 啟動 Android Studio WshShell.Run """D:\ware\AndroidStudio\bin\studio64.exe""" ' 更多初始化功能 ' ... WScript.Quit
5、其他語法
獲取當(dāng)前日期:
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、代碼實現(xiàn)
代碼很簡單,打開 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 的語法比較人性化,就像口語一樣,tell application “Safari” 表示告訴應(yīng)用 Safari。
- activate 意思是激活,也就是打開 Safari。
- tell window 1 意思是告訴當(dāng)前窗口
- set URL of current tab to “xxx” 表示將當(dāng)前 tab 頁的 URL 設(shè)置為 “xxx” 網(wǎng)址
- set current tab to (make new tab with properties {URL:“xxx”}) 表示新建一個標(biāo)簽頁,并將其 URL 設(shè)置為 “xxx” 網(wǎng)址
- 每一個 tell 對應(yīng)一個 end tell,tell 中的內(nèi)容需要保持縮進一致。
這就是 Windows 和 Mac 上各自的腳本工具,熟練運用自動化腳本,可以讓電腦更加的智能!
以上就是教你編寫Windows的VBScript與Mac的AppleSCript腳本解放雙手的詳細內(nèi)容,更多關(guān)于Windows的VBScript與Mac的AppleSCrip的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
輸入mdb數(shù)據(jù)庫即可將打包的mdb文件解包
2008-01-01用VBS控制鼠標(biāo)的實現(xiàn)代碼(獲取鼠標(biāo)坐標(biāo)、鼠標(biāo)移動、鼠標(biāo)單擊、鼠標(biāo)雙擊、鼠標(biāo)右擊)
不止一個人問過我怎樣用VBS控制鼠標(biāo)操作,比如:怎么用VBS獲取鼠標(biāo)指針的坐標(biāo)位置?怎么用VBS移動鼠標(biāo)2011-10-10