訪客留言簿

星期五, 3月 21, 2008

[電腦加速] RamDisk + Batch File + Startup

前言

各位好,因為我發現 7-Zip 有 CommandLine 模式用的執行檔,所以我剛爆肝研究了一下自動解開壓縮檔的方式,還順便把 OpenOffice.org 扔進 RamDisk ,總之批次檔萬歲! \^o^/

注意一下, RamDisk 上的資料會在重開機後消失,除非你是像我一樣, Firefox 書籤破 3MB 的,打開書籤都會頓一下,不然絕對別把某些要時常保存的資料放進去。

準備工作

  1. Windows XP (如果你覺得一些指令你有辦法找到替用的,那也可以用別的作業系統。)
  2. 速度夠快、空間夠大的硬碟
  3. 沒有在用的 1GB 以上實體記憶體
  4. 7-Zip 或其它有純文字命令列模式的解壓縮軟體
  5. RamDisk 軟體(我也不知道哪裡有,試試看咕狗「gavotte的ramdisk的gui前端」吧。)
  6. 在硬碟中存放壓縮檔的資料夾
  7. 純文字編輯器(我目前是用 MadEdit ,你當然也可以用 Windows 內附的 notepad.exe 。)
  8. 國小生的思考能力(其實只需要看你的情況改改資料夾路徑而已)
  9. 駭客精神(我的解釋是別認輸求上進就夠了)
  10. 水和零食(攻城師手邊拿不到這些東西是會死的)

假設情況

假如我覺得用硬碟Pigfoot FirefoxOpenOffice.org 和其它一堆軟體都還是太慢了,該怎麼辦?

那就把程式丟到快硬碟上百倍的記憶體裡跑吧!只是每次都要手動複製程式也太麻煩了,所以這也就是為什麼我會寫批次檔的原因。(不過我其實並不太熟文字命令列的指令)

總之我就先假設下面幾個前提吧:

  1. 我要把 pgFx 解壓縮在 RamDisk , OpenOffice.org 也要安裝在 RamDisk 。
  2. 為了加速複製檔案到 RamDisk 的速度,所以我把放在 RamDisk 中的 pgFx 跟 OOo 都用 7-Zip 壓縮好了。
  3. 然後我把這些 7z 檔案放在硬碟某處。
  4. 每次開機登入時,我都會跑個批次檔,自動把這些 7z 壓縮檔丟到 RamDisk 上,並且解壓縮,再刪除掉壓縮檔。
  5. 還有我不希望批次檔在跑的時候,會跑出醜醜的黑底白字視窗。
  6. RamDisk 我設置在 R 槽,壓縮檔我放在 H 槽底下的 _RamDisk_ 資料夾中。

實行步驟1:處理 7-Zip

因為接下來用批次檔時,會碰上個「執行檔路徑」中不能有空格的問題(其實應該可以解決,只是我找不到方法。),所以我決定把 7-Zip 給安裝到 C:\7-Zip 這路徑。

總之就請各位把 7-Zip 安裝到這吧,如果你先裝到「含有空格」的路徑的話,那就先移除 7-Zip ,重開機,再安裝一次。

實行步驟2:處理批次檔

這裡也挺簡單,複製貼上這下面的原始碼,再自己看情況修改一下紅色粗體強調字的地方就好。

start "Delay Ping" /low /min /wait ping 192.168.0.1 -n 20 -w 1
start "Copy Program to Ram" /low /min /wait xcopy H:\_RamDisk_\*.7z R:\ /y
start "Extract Ram's Files" /low /min /wait /D R:\ C:\7-Zip\7z.exe x R:\*.7z
del R:\*.7z
EXIT

接著先來解說一下,上面的紅色粗體字是代表什麼意思。

  1. 20
    等待的秒數。其實除了用 ping 的以外,用 type nul 還啥的也可以。
  2. H:\_RamDisk_\*.7z R:\
    要『從哪』把『附檔名是 7z 』的檔案給複製『到哪』。來源跟目的地間要記得空一個空格。
  3. C:\7-Zip\7z.exe
    使用純文字命令列模式的 7z 程式。總之找 7-Zip 安裝目錄底下的 7z.exe 就是,其它還有很多指令可以查,請自行在「開始 → 執行」中用 command 或 cmd 打「 C:\7-Zip\7z.exe --help 」查。
  4. /D R:\
    執行 start 指令時要使用的路徑(在這是 R: )。這會影響到一些沒指定路徑時,檔案建立的位置,所以有必要時就要加。
  5. R:\*.7z
    RamDisk 底下的『副檔名是 7z 』的檔案。最後有兩個這個東西,第一個是解壓縮,第二個是刪除。

※註:在 Windows Vista 下想用 robocopy 代替 xcopy 的話,就寫「 start "Copy Program to Ram" /low /min /wait robocopy H:\_RamDisk_ R: *.7z 」之類的,重點是檔案要寫到後面啦。

實行步驟3:自動執行批次檔

總之弄好批次檔後,就是想辦法讓這玩意,在每次開機時都自動執行就好。

所以先開啟桌面下方的「開始 → 程式集 → 啟動」這個資料夾,在裡面建立個捷徑,把路徑指向你的批次檔位置就好。

不過別忘記,大夥一進 Windows ,想看的是美美的桌布(雖然工作時根本不會看),而不是醜醜的黑白視窗(當然會覺得這種配色挺好讀的也大有人在),所以請在啟動資料夾的批次檔捷徑的圖示上,按滑鼠右鍵開快顯選單(context menu),選擇「內容」,然後在「捷徑」項下,把「執行」的下拉選項調成「最小化」,這樣子就是會縮小執行,不去點開的話是不會跑到畫面上來的。

其它

沒有其它了,我要爆肝啦~!!

6 comments:

仁村桐生 提到...

在路徑外加上雙引號應該就可以使用有空白的目錄
ex: "c:\program files\winrar\rar.exe"

wini 提到...

用引號的一個問題,就是 start 指令會把那個當成視窗的 title ,結果就不會去執行的樣子。(汗)

我在想應該可以用省略符號(~)處理,可是也沒成功過呀。

wini 提到...

最近發現批次檔用 start 開頭時,第一個用雙引號(")包住的會變該執行命令視窗的標題,但是第二個用雙引號包住的,好像就只會當成是執行檔所在路徑了……總之改天再繼續確認看看。

wini 提到...

回一下 5566 的問題。(因為你留了信箱,所以我沒辦法隨便公開你的回文。)

要把防毒軟體也打包,用同一招丟進 RamDisk 中是可行的,不過沒意義,因為防毒軟體是需要時常更新的,而且就算安裝在 RamDisk 中,有些更新檔案還是會裝在作業系統所在的分割區中。

所以「時常更新」加上「檔案不是全在安裝目錄中」這兩個限制,我覺得防毒軟體並不適合放進 RamDisk 中,而且其實也沒有什麼特別的加速效果,只是會給自己找麻煩而已。

但是一定要這樣弄的話,首先就是安裝進 RamDisk,接下來得調整 services.msc,把防毒相關的服務調成不在開機時啟動,這樣子才不會還沒複製完防毒軟體,就先啟動服務。最後則是跑批次檔完後,要自行啟動服務,或試看看有沒有什麼指令或是程式可以讓防毒軟體自動啟動即時掃瞄服務的。(之前我試過 AntiVir 好像可以但實在太麻煩了也就沒留下筆記的樣子)

匿名 提到...

我想發問:什麼情況下可以把start "Delay Ping" /low /min /wait ping 192.168.0.1 -n 20 -w 1
這一行拿掉?
為什麼我看的教學文章寫出來的批次檔(用RAR)不需要Ping?

wini 提到...

上面的匿名你好,那行就只是「ping」而已,跑完這個 ping 後,會等候指定秒數,才繼續跑下一個指令,但不必非用 ping 不可。

會寫這一行,是因為我沒辦法用批次檔來分配程式執行的優先順序,所以就用 ping 本機這個動作,去拖延接下來的複製動作,這樣可以避免一下跑太多讀寫,讓硬碟吃不消或拖累其他程式載入,但是你如果有辦法幫系統設定程式優先執行順序的話,就可以改寫掉那一行。

簡單來說這只是我懶得去挖優先權相關設定,所想出的另一種方法,其實是可以視情況調整秒數(調成 0 也行),或改成不要 ping 就開始複製解壓縮的,應該要看你自己的需求。

順帶一提,使用 7z 只是因為這可以合法免費下載使用並解壓縮許多格式、支援多國語言檔名而已。如果你比較喜歡用 rar,或皷不喜歡放一個 ping 指令,或等候硬碟讀寫空閒下才跑的話,可以再考慮用別人的方法。

 

本站著作(不包含圖片、影音以及回應留言)係採用 Creative Commons 姓名標示-非商業性-相同方式分享 2.5 台灣 (中華民國) 授權條款授權