stars
(c)

April 28, 2010

命令提示字元介面語言一鍵轉換——Englishize Cmd

(A native English version of this article is available here)
englishize-cmd-1-result
「雙語的命令提示字元:上為應用 Englishize Cmd 之後(變成英文界面),下為恢復後(至原來的語言)。」

[2014-05-13] 更新:1.7a 版推出。即時推出的修正,以解決上個版本 Restorer.bat 在提升權限時(UAC)執行了不正確的指令檔的問題。

功能一覽

  1. 在英文和中文(或其他語言)間切換視窗指令介面
  2. 方便偏好英語介面的視窗系統管理員
  3. 無需登出;設定後即時生效。
  4. 包括還原工具。設定和回復都只是一按那麼簡單。
  5. 字元相容性比改變 DOS codepage 的方式更佳。
  6. 支援大部份語言和程式。用者可隨意增減。
  7. 需要系統管理員權限。它會自動詢問是否提升權限。(經網絡除外)
  8. 支援 Windows Vista/7 或以後。

為何有這需要?

englishize-cmd-2-shortcut
「437 = 英文代碼」

最近有人在討論區問如何在中文 Windows 以英語顯示內置的命令列工具,因為對一些專業的系統管理員來說,命令列介面還是英文好用。人們分享各種方式,如改變 DOS codepage;在運行命令前輸入「chcp 437」 (437 = 英文代碼)。或者,創建一個捷徑指向 cmd.exe 和將其屬性內的「當前內碼表」設定設置為 437。

不過這兩種方法會令中文字元不能顯示(變為問號 ????)。另外前者每次都要輸入「chcp 437」(儘管可以在「HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor\AutoRun」註冊表項內設定成自動這樣做),而後者則只限用於捷徑。為解決此問題,以下介紹的作法使用另一種原理。

對於命令列程式來說,中文或其他非英語版本的 Windows Vista 和 7 其實跟來就有英語和一種非英語的 MUI(多語言使用者介面),例如中文台灣(zh-TW)。這意味著如果我們不喜歡被本地化成中文的命令列介面,或者會有某種簡單作法能將其轉為英語而無需在區域選項(Regional Options)內切換然後重新登入。這種作法就算不是 Ultimate/Enterprise 版本也應沒關係。

englishize-cmd-3-ipconfig-2
「轉換字元的方法會令中文字變成問號。」

原理

經過 Sysinternals Process Monitor 進程監視器的調查,我注意到,每當 Windows 無法在 zh-TW 目錄下找到相應的 .exe.mui 檔案,它就會自動使用 en-US 目錄下的 .exe.mui 檔案。所以一個想法來:為什麼不重新命名(刪除都可,但不建議)zh-TW 下的 .exe.mui,以使到它自動回落,使用 en-US 下的 MUI?現在我可以證實這技巧是可行的,只是過程殊不簡單 -- 決定哪些系統檔可被重新命名、取消保護這些檔(因為它們都受 WRP 資源保護)、重新命名每一個命令列程式等等。於是對 Englishize Cmd 的需求來了。Englishize Cmd 是一個簡單的可自訂程式(批次處理指令檔)用以自動化這個繁厭的過程,方便以後在兩種語言間互相切換。

englishize-cmd-4-startup
「上:Englishize.bat;下:Restore.bat」

說明

「Englishize Cmd」帶有 4 個檔案

  1. 「Englishize.bat」將命令列工具從非英語變成英語。
  2. 「Restore.bat」恢復一切,回到原來的語言。
  3. englishize-cmd-5-docs
    「左:_files_to_process.txt;右:_lang_codes.txt。一些檔案並不存在。」
  4. 「_lang_codes.txt」是個可修改的列表,其中包含所有非英語語言的代碼。它包括大多數語言(如中、法、俄),但萬一你的語言不存在,把它添加然後 Englishize Cmd 便可支援你的系統。
  5. 「_files_to_process.txt」是個可修改的檔案名列表,其中包含所有會被轉換 MUI 的命令列程式。所有 Windows Vista 和 7 的命令列程式預設都已包括(實際上它包含更多沒有的命令,但這也沒關係,因為對不存在的命令它是起不了任何作用的。)如果不希望某些命令轉成英文,運行「Englishize.bat」之前就要將他們從這個名單中刪除。此外,雖然這份清單只包括命令列程式,你也可以添加 GUI(圖形化使用者介面)程式,例如把小畫家(mspaint.exe)加到「_files_to_process.txt」。這裡有一個問題,中文 Windows 僅得命令列程式是同時附帶英語和中文的 MUI,GUI 程式則預設只有中文,所以 en-US 下的 mspaint.exe.mui 預設是不存在的。直到用戶安裝英文 MUI,通過 Windows Update 或 Vistalizator(對於非-Ultimate/Enterprise Windows 用戶),GUI 程式方可被支援。
englishize-cmd-6-during-process-2
「有趣的是,在運行 Englishize.bat 時有一刻是會同時顯示兩種語言。」

Englishize Cmd 影片示範

Englishize Cmd 在設計時考慮到安全;為了避免造成系統問題,它不容許在 en-US 目錄找不到對應 MUI 時處理那個檔案。

建議

你有任何建議或臭蟲要報告嗎?請於下面回覆。

往 GitHub 專案

https://github.com/wandersick/englishize-cmd

版本歷程 / 下載


版本 日期 更新內容 MD5
1.7a 20140513 即時推出的修正,以解決上個版本 Restorer.bat 在提升權限時(UAC)執行了不正確的指令檔的問題。 c0b89ec00a51403db6afc650cc4dba16
1.7 20140511 修復問題:不停地彈出命令提示字元。 6ae00a4461d0946d38f442e279c416fe
1.6a 20140105 即時推出的修正。改良了上一個版本。 72a3fe23d386d400f0b6d7d31b0562d7
1.6 20140105 1. 修復問題:某些語言的視窗下,系統管理員群組並非名為 Administrators(謝謝德國網友 Markus)。
2. 確認能夠在 Windows 8.1 運作。
0f45d9df16c9597a58804103fc0b492e
1.5 20130215 1. 支持 %systemroot%\syswow64 下的 mui 檔案(多謝網友 Cheyi)。
2. 還原程式(restore.bat)現在可以還原本來的權限和擁有者(TrustedInstaller)
3. 確認能夠在 Windows 8 運作。加入最新的命令列程式。
8f6a103cad75167408f7dce43460eff9
1.4a 20120408 修正了上一版的 "_lang_codes.txt"。不應加上 en-XX 語言否則會連英文都會被停用。 6793d377acd497643a9c762d3fed6c81
1.4 20120407 改良了 "_lang_codes.txt"。現在應該支持所有系統語言。(如果你用的語言不受支持,請告知) dc458d3e02d72956a61021bb0d90c2ff
1.3 20100428 增加提升權限詢問、視窗版本檢查 2312bb99d93915a7645237dbb1de2191
1.2 20100420 改善讀我檔案和一些程式碼 b25aa93e43577b3209f4aa57d9966e60
1.1 20100416 增加系統管理員身份檢查 d4082b73326963ecf17f4801106bc371
1.0
20100401 首個公開發行 d8f0e80c6c6fc9f03629aab911f102ee

下載最新版 Englishize Cmd [或這裡]


歡迎用以下方式儲存或分享本文:


No comments :

Post a Comment