其實這整件事最原始的需求只有一個,就是我想在電腦的桌面上放一個行事曆,提醒自己看牙齒或是轉帳這種瑣事。然後我找到了免費的Rainlendar軟體,也發現網路上很多人分享如何與Gmail或outlook日曆同步的文章。
網路上的行事曆我習慣用Hotmail,主要是我只要有開電腦就一定會上MSN,然後去Hotmail檢視信件,其他如gmail、url、pchome等信箱我都使用outlook express接收。而像是朋友生日、旅遊、志工值班、拜月日等資料我都習慣記錄在Hotmail中。
這時候新的需求就出來了,我希望Hotmail上的記錄也可以在Rainlendar顯示,不用同步,比較像是備份的功能,因為我還是以在Hotmail上登錄為主,而且像轉帳這種主要為提醒功能的事,完成後也不需要再填回Hotmail,因此並不需要有同步的功能。
有了需求當然就是要開始找解法啦!在google繞了一圈,雖然大部份分享的都是goole行事曆和Rainlendar間的功能,相形之下Hotmail真是弱勢啊!找到第一個solution是wget,是用來抓檔案的指令,對我來說就是正解啊!
網路上相關分享如下:
http://www.kyyeung.com/Computer/100422/100422.htm
下載wget後,也寫好了batch檔,結果執行時出現「Unable to locally verify the issuer's authority」,用「wget –h」查了Help資料,補上「--no-check-certificate」後,改出現「404 Not Found」。不管我用google或是Hotmail行事曆的連結,都出現一樣的訊息,而且找不到解答,重點是如果直接把url貼到網址列中,是可以下載的。(難道要我每天開機就手動載一次?)
好吧!山不轉路轉,只好先放棄wget,改試試名叫GCALDaemon的AP,下載安裝後,沒有javaw無法執行,才發現它需要JRE 1.5以上的版本,因為已經三點了,決定不玩了先來去睡,擇日再戰。
隔天仔細爬了一下google的文,發現這個GCALDaemon功能很多,我竟然只要用它一個同步google日曆的功能,而且以我的狀況,我還得先把Hotmail轉入google中,雖說這個本來我就已經做了,但是原本沒開共用,還得再設定一次。
總之有種殺雞用牛刀的感覺,而且這個得提供google帳號和密碼登入,我不喜歡。不死心再回去查wget,看有沒有人遇到同樣的狀況。這次直接把error message和wget google calendar等關鍵字打進去,出來一堆英文網頁。
果然發現很多人遇到同樣的問題,發問者沒得到解答,倒是跳出一堆人出來說他也一樣,有答案要通知他之類的。在一堆無用的文章中終於看到了一點希望,有一個人寫了一句「Replacing the %40 with @」,因為google calendar提供的ics連結是以gmail帳號為主,所以一定會出現「@」符號。
一堆英文中總算有一個正解
http://markmail.org/message/jv4afcvl5ibosalj
真是一整個豁然開朗啊,果然一改就立刻成功,當下立即去修改hotmail的行事曆的名稱,把空白和中文字都拿掉(因為空白會轉成「%20」),這位不知名的某人,我真是太感謝你了,終於可以直接備份Hotmail的行事曆了!
指令樣本如下:(它還有很多參數可以下,想玩的人可以自己試試看。)
wget –O [放在電腦的檔案路徑及名稱] --no-check-certificate [hotmail或google提供的ics URL] –o [log檔案名稱]
Sample:
C:\wgetwin\wget -O D:\sheree\系統備份\Hotmail_ics\HotmailCalendar.ics --no-check-certificate https:// ShereeHotmailCalendar/calendar.ics -o dwnldHotmailCL.log
不過,這就跟過關一樣,一個問題之後一定會接著另一個問題啊!我把batch掛到排程裡,想設定在使用者登入後5分鐘啟動,因為剛登入時網路都還沒連妥,備份應該很容易失敗。問題來了,DOS的指令裡沒有sleep,繼續請教google大神,download一支sleep.exe。
一開始是找到這個網站
http://blog.miniasp.com/post/2009/06/Sleep-command-in-Batch.aspx
但是他介紹的Kit Tools太大包了,我後來直接抓的只有sleep.exe,只是連結已經不知沉到哪裡去了,常google的人一定可以瞭解吧?哈哈!所以請用關鍵字自己去找囉,這個sleep.exe沒有help,使用和所有的sleep指令一樣,後面空格加數字,單位是秒。
好啦,sleep解決之後,我才發現batch沒辦法在背景執行,每次一跑就會跳出DOS視窗,很討厭。網路上有人說用system執行,就不會出現視窗,可是我改成system之後,連跑都不跑了,不知道是哪裡有問題?
最後找到幾個網站,Bat To Exe Converter可以把batch轉成exe檔。
http://blog.yam.com/zhiqingblog/article/20649193
http://blog.miniasp.com/post/2008/10/07/Useful-tool-Bat-to-Exe-Converter.aspx
不過這支AP在執行時會被防毒檔掉,我是先關掉防毒軟體,產生exe後再開啟防毒,為了讓我可以隨心所欲的修改原batch,我在外面又包了一支batch(用這支產出exe),這樣以後改秒數或是什麼,就不需要再重新make。
還有一個方法,感覺也比較乾淨一點,有興趣的人可以試試看。
http://forum.jdp.tw/thread-735-1-1.html
用了兩天之後,突然被防毒程式攔到還叫我解毒,不知道是卡巴太敏感還是怎樣,總之它把我的exe刪掉還重開機,看來我還是只能用乾淨的程式,哈哈!
我現在的用法是另外再建立一支batch檔,利用START /MIN xxx.bat&exit的方式執行,可以達到最小化執行,只是在排程中,原本排程執行應該要等5分鐘後才會顯示執行結束,但用這種方法會變成直接就當作執行完成。
留言列表