2006年1月26日 星期四

關機前自動執行指令

平常在 Windows 下要關機都是從開始功能表選擇關機指令,滿快也滿方便的。

但是這樣的關機方式沒有彈性,比方說,我在關機前想要自動執行某些程式就沒有辦法。

會有『關機前執行程式』的需求是因為平常上班時我帶著筆記型電腦到學校,文件就在筆電中進行;回到家後,我還是習慣使用桌上型電腦進行工作,畫面大、鍵盤大,舒服多了。

問題就在於資料如何在兩台電腦之間進行轉存的動作?

方法之一:利用隨身碟

所有的作業都在隨身碟上進行,屆時祇需將隨身碟轉接到桌上型電腦,就可以在家中繼續工作。

可是我有次去找指導教授時就發生一大慘劇,他要我看看畫面上的內容,我靠過去,一個不小心我的腳踢到教授電腦上的隨身碟,它就這樣壞掉了,教授存在上面的資料全都沒了。我除了滿懷抱歉地買個隨身碟還教授之外,也無法再補償老師太多。

祇是這個經驗讓我發現,將所有資料都置於隨身碟雖然方便,但有潛在的危險。

方法之二:關機前將所有檔案傳至 Ftp Server

我在家中桌上電腦建立 Ftp Server,24 小時不關機,每天下班前就將檔案傳回自家電腦;隔天到了學校再從學校連線回家,從家中電腦下載檔案使用,下班前再傳回去。

這是一個可行的方案,再配合 WinRAR 的 -ta 指令,我就可以將近日內有修改過的檔案打包起來,再送回 Ftp Server (後來我又改用 SVN Server 取代 Ftp Server ,不過那是後話了)。

現在的問題是,我每天修改的檔案不祇一個,我要去將這些檔案一個個找出來、一個個傳回家,回家後再一個個找出來放到適當的資料夾中,這是一件無聊的工作。而且,萬一我哪天漏了一個檔案就關機,回到家還得將筆電打開、傳檔案、關筆電,實在很無奈。

那麼有沒有辦法將這些工作在關機前自動執行,待執行完了後再關機呢?

有,就是將相關的指令寫成一個批次檔,關機前執行它,等到執行完後再關機。

祇是這還是麻煩,因為 ADSL 傳檔的速度不快,我必須在電腦前等檔案傳完後才關機也是很無趣,如果這段時間可以收拾包包,上個洗手間,回來時電腦已經傳好檔案,且已自動關機完畢那該多好?

嗯,這就是我寫這篇文章要談的內容:運用 Windows 中的 Shutdown.exe 指令自動關機。它的使用方式:

shutdown -s -t xx -m \\computerName
-s 電腦關機
-t xx 將關機等候時間設定成 xx 秒
-m \\computerName 從遠端進行關機/重新啟動/中止
(上面所列的 \\ 請自行轉換為半型的倒斜線)

如此一來,我可以在批次檔寫入關機指令,系統幫我把檔案傳至家中 Ftp server 後,接著執行關機指令。日後我關機時不再點選左下角的開始功能表,而是直接執行我所寫的這個批次檔進行檔案備份與關機。

我的批次檔如下:

cd "D:\Yukie's Documents\"
del /A: /S *.wbk *.tmp ~*.*

cd "D:\Yukie's Documents\Other\"
svn add *
svn ci -m "change"

C:\WINDOWS\system32\shutdown.exe -s -t 0 -m \\NoteBook

前兩行指令會將 D:\Yukie's Documents\ 資料夾中的暫存檔清乾淨;第三至五行是將有修改過、新增的檔案送回我的 SVN Server 中,最後一行就是利用 shutdown 指令將我的筆電關機。

我將這些指令存成一個 .bat 檔案放在桌面上,之後要關機時就直接執行這個 .bat 檔,一切傳檔、關機一次 OK,多麼方便?:p

這幾天又在 lss 老師那邊學到一招,原來可以利用 shutdown 指令幫電腦教室的電腦關機,以後在電腦教室就不用一台台檢查、一台台關機了,一道指令解決,真棒!!:D

Technorati :