Ramdisk 系列 – Skype

很久之前會遇到skype頻繁的 I/O錯誤,搞得我要一直砍 “C:\Users\%USERNAME%\AppData\Roaming\Skype"才能正常登入,那時一直找不到原因…

※2014.04.26
最近發現環境變數的 temp/tmp 的目標資料夾在 skype 啟動時如果不存在的話,也會造成 I/O錯誤。
所以這部分就需要在執行前確保該資料夾的存在囉~

最近換上SSD做系統碟,為了進一步減少SSD的讀寫頻率,開啟了久違的RamDisk,結果 skype 的 I/O 錯誤又再度出現惹!

推測應該是和我把 temp/tmp 轉移到 ramdisk 上有關係,關鍵字搜到了這篇

[Skype] 解決因磁碟 I/O 錯誤,無法登入的問題。

推測原因是skype啟動時,ramdisk還沒準備好,導致skype初始化失敗。

解決方法的原則就是避免在 ramdisk 尚未準備好之前就 skype 啟動即可。

※以下皆以 Win7 為準

方法有兩種方向:

 

方法一 – 就是乾脆別讓 skype 在啟動時自動開啟,自然就不會有來不及的問題惹~

直接從 skype 選項中把 “啟動 Windows 後,自動執行 Skype" 的選項取消即可。

執行 “msconfig" > 啟動 > 取消Skype的項目

 

方法二 – 延遲 skype 的啟動時間,讓它在 ramdisk 啟動完成後再執行
※這個稍微進階了點,請清楚流程再使用嘿~

可以寫個 bat 檔讓啟動觸發~

::這兩行 set 就只是在設定變數
::如果你沒興趣搞懂 bat 又很相信我的話,就修改'skypeExe'這個參數就可以了~
set delayTime=3
set skypeExe=C:\Skype\Phone\Skype.exe

::這個 ping 是用來模擬 sleep 用的
start "Delay Ping" /low /min /wait ping 192.168.0.1 -n %delayTime% -w 1

::檢查資料夾是否存在,若無則建立一個
if not exist %temp% (md %temp%)

::執行 skype
start %skypeExe% /minimized /nosplash

exit

模擬 sleep 做到延遲的效果的詳細可參考『如何在批次檔(Batch)中實現 sleep 命令讓任務暫停執行 n 秒

::這是使用 timeout 的版本,這還可以讓你按下任何鍵提早觸發XD
set delayTime=3
set skypeExe=C:\Skype\Phone\Skype.exe

::這個 ping 是用來模擬 sleep 用的
timeout /t %delayTime%

::檢查資料夾是否存在,若無則建立一個
if not exist %temp% (md %temp%)

::執行 skype
start %skypeExe% /minimized /nosplash

exit

放好 bat 檔後,直接把 skype 的啟動機碼內容換成你的檔案位置即可。

參考機碼位置『HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run\Skype』

One thought on “Ramdisk 系列 – Skype

  1. 通告: SSD – Skype 轉移使用者資料夾 | NaCl's Blog

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 變更 )

Twitter picture

You are commenting using your Twitter account. Log Out / 變更 )

Facebook照片

You are commenting using your Facebook account. Log Out / 變更 )

Google+ photo

You are commenting using your Google+ account. Log Out / 變更 )

連結到 %s