網頁

2023年11月30日 星期四

.cmd、.bat批次檔、reg檔編碼與顯示及執行結果之關係

.cmd、.bat批次檔有一點差異,.bat檔是DOS 與 Windows 9x時代的副檔名,.cmd是 Windows NT之後開始使用,windows 10/11請用.cmd批次檔。

查看批次檔命令提示字元預設的字碼頁

在 開始 按滑鼠右鍵->執行


cmd->確定

在命令提示字元視窗上按滑鼠右鍵->內容

批次檔命令提示字元預設的字碼頁是 ANSI/BIG5編碼。因此,如.cmd檔是 UTF-8 編碼,執行時有中文顯示時會出現亂碼。因此,.cmd有中文時,存檔時請選 ANSI 的編碼方式。

cmd存檔時選 ANSI 的編碼方式

命令提示字元的字碼頁是 ANSI/BIG5編碼,.cmd檔是 UTF-8 編碼,執行時有中文顯示時會出現亂碼

.cmd檔是 UTF-8 編碼,執行時有中文顯示時會出現亂碼

將以下註冊碼存為reg檔導入,命令提示字元的字碼頁改成UTF-8
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor]
"Autorun"="chcp 65001>nul"


如命令提示字元的字碼頁是UTF-8編碼,.cmd檔是  ANSI編碼,執行時有中文顯示時會出現亂碼



將以下註冊碼存為reg檔導入,命令提示字元的字碼頁改回預設 ANSI/BIG5編碼
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor]
"Autorun"="chcp 950>nul"

從windows匯出的.reg檔,預設編碼UTF-16LE
以匯出HKEY_LOCAL_MACHINE\SYSTEM\Setup\LabConfig的.reg檔為例
在LabConfig上按滑鼠右鍵->右鍵

輸入存檔檔名->存檔

查看匯出reg檔編碼
用記事本開啟匯出的reg檔->檔案->另存新檔,即可看到匯出的reg檔預設編碼是UTF-16LE。

.reg檔編碼如改為UTF-8

如.reg檔編碼是UTF-8,匯入windows系統,有中文顯示的操作,變成亂碼,例如在檔案或資料夾按滑鼠右鍵的 管理員取得所有權,顯示亂碼。

如.reg檔編碼是UTF-16LE或ANSI,匯入windows系統

有中文顯示的操作,正常顯示中文,例如在檔案或資料夾按滑鼠右鍵的 管理員取得所有權,正常顯示中文。

從以上實作可知,.reg檔編碼,建議用UTF-16LE或ANSI編碼。
.cmd檔有中文顯示的建議用ANSI編碼,無中文顯示的常用UTF-8編碼。


沒有留言:

張貼留言