[Tools] 撰寫AutoHotKey指令以複製檔案

本是用dup.bat將本地端的檔案複製到Production主機,dup.bat是使用目前目錄(Current Directory)來當做目的目錄的名稱,因此複製前要先切換目錄到要操作的目錄。為了簡化切換目錄的指令,試著用AutoHotKey來撰寫,原因是
AutoHotKey的控制與介面能做到較精細的程度。

AutoHotkey有指令可以顯示圖形元件,為了快速產生畫面,可以由其下載頁下載SmartGUI Creator 3.5,再用SmartGUI Createor來產生圖形介面的Autohotkey script檔。簡單的操作是:

  • 按右鈕並選擇要加入的元件,如文字標籤(Add Text)、編輯(Add Edut)或按鈕(Add Button)等 (圖1)
  • 將選擇的元件放在面板的特定位置後按左鈕,再到右下方按第二次左鈕,則在二次按鈕的矩形區域形成了元件
  • 在元件上按右鈕可針對元件做設定標籤、變更位置等額外功能(圖2)
  • 在圖1的右鈕功能表最後面有Save GUI可以將畫面存成 .ahk 的腳本檔

SmartGUI 1
SmartGUI 2

我們製作好的視窗畫面如下,輸入要複製到M:或R:的檔案,按OK後就將檔案複製過去。

SmartGUI 3

修改後的腳本檔內容如下:

AutoHotKey指令 說明
Gui,
Add, Text, x6 y12 w80 h20, 來源檔案:

Gui, Add, Edit, vSource x90 y12 w290 h24, %Source%

Gui, Add, Text, x6 y42 w80 h20, 目的磁碟:

Gui, Add, Checkbox, vMDrive checked x90 y42 w50 h20, M:

Gui, Add, Checkbox, vRDrive x156 y42 w50 h20, R:

Gui, Add, Button, x90 y72 w80 h30 default, &OK

Gui, Add, Button, x196 y72 w90 h30, &Cancel

Gui, Show, ,檔案複製

Return

視窗的畫面指令。

  1. 來源檔案的編輯元件命名為vSource,在後面可以用Source來取用其輸入之值;公用變數必須用v開頭
  2. 用Gui, Show把視窗顯示出來
ButtonOK:

Gui, Submit ; Save each control's contents to its
associated variable.

if MDrive = 1

{

StringMid, Target, Source, 3, 128

Target = M:%Target%

FileMove, %Target%, %Target%.bak, 1

FileCopy, %Source%, %Target%, 1

}

  1. 按OK後會跳到ButtonOK:
    執行
  2. 必須用Gui, Submit將輸入的值存入變數
  3. CheckBox被勾選的話,其值等於1
  4. 用StringMid取出輸入檔名去掉開頭磁碟機代號後的路徑
  5. 用FileMove先備份原有的檔案,後面的1表示若.bak若已存在的話則用覆蓋方式備份
      1. 用FileCopy將檔案複製到M:
GuiClose:

GuiEscape:

ButtonCancel:

Gui, Destroy

return

按X關閉視窗、按Escape或點Cancel按鈕則將視窗關閉

撰寫過程務必開啟其線上Help來同步學習,手冊分類相當清楚且有許多範例可以參考。

您可能也會有興趣的類似文章

簡睿

服務於軟體業的資訊老兵。興趣廣泛,學習力佳,樂於分享所知所學。

您可能也會喜歡…

2 個回應

  1. 簡睿表示:

    整批部署用Ant或許會比較便利,但若只要複製少數的檔案(有些改一半的還不能放出去),應該用Shell的script會比較方便。但Windows Script不熟,因此才拿AutoHotkey來測試。

  2. Vincent表示:

    像這種需求是不是考慮用ant 會更方便點? 畢竟佈署的方式也該保存下來。一點小意見。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *