忙裡偷閒,用powershell自動撰寫檢查記錄表

#### 我有檢查系統。我有檢查系統。我有檢查系統。很重要,所以要說三遍。

其實事由是這樣的,因為每天需要檢查系統並且記錄,記錄的方式是用Word,內容部份如下:




每天手動複製前一天的Word,更改檔案名稱為今天的日期,再將內容變更日期,逐一檢查沒問題再填上ok

由上的步驟可知,有幾個是浪費時間的操作,第一個是手動複製Word,第二是更改檔案名稱,第三是更改內容的日期。


為了增加程式設計的能力,所以用powershell來幫我完成上述的動作。


首先產生一個樣版的Word,檔案為sample.doc,如下:


 

#### 完整的powershell程式碼如下,檔案名稱autoLogWord.ps1


$Path="E:\定期檢查記錄\每日檢查記錄\"


$Word=new-object -ComObject "Word.Application"

$Word.Visible=$true

$Doc=$Word.Documents.open($Path + "sample.doc")


$Table=$Word.ActiveDocument.Tables(1)


$Year=(get-date).tostring("yyyy")

$Month=(get-date).tostring("MM")

$Day=(get-date).tostring("dd")


for($i=2; $i -lt 16; $i++){

  $Table.Cell($i,1).Range.InsertAfter($Year)

  $Table.Cell($i,2).Range.InsertAfter($Month)

  $Table.Cell($i,3).Range.InsertAfter($Day)

}


$NewFile=$Path + $Year + $Month + $Day + ".doc"


$Doc.SaveAs([ref]$NewFile)


$Doc.Close()

$Word.Quit()


explorer.exe 'E:\定期檢查記錄\每日檢查記錄'


#### 程式說明:

其中$Word=new-object -ComObject "Word.Application" :為引入Word應用程式物件

$Doc=$Word.Documents.open($Path + "sample.doc") :就是開啟樣版檔案

$Table=$Word.ActiveDocument.Tables(1) :因為我們要操作的內容是Word的表格,所以要引入,參數1是指Word上第一個表格

for($i=2; $i -lt 16; $i++) :因為表格的第1列是標題,所以從第2列開始,而我的記錄表格實際上有15列,所以加上-lt(小於)的運算子

$Table.Cell($i,1).Range.InsertAfter($Year) :這個就像是Excel的儲存格操作一樣,指定第幾欄第幾列並將資料填上

$NewFile=$Path + $Year + $Month + $Day + ".doc" : 依照今天日期的年、月、日建立檔名

$Doc.SaveAs([ref]$NewFile) : 實際存檔


#### 設定排程

有了程式,當然要設定排程,這樣才能每天自動幫我執行。