2017年9月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
無料ブログはココログ

« バッチファイルを暗号化する。 | トップページ | コンソールアプリをウィンドウアプリに化かす。 »

2009年4月14日 (火)

バッチファイルを Unicode や UTF-8 で書く。

ただし、拡張子は .cmdu と .cmd8 です。

バッチファイルは、シフトJIS、EUC、EBCDIC などで書けますが、Unicode や UTF-8 では書けません。:-(
しかし、Unicode や UTF-8 であっても、日本語文字だけなら、シフトJISにコード変換すれば、実行できます。
そこで、.cmdu と .cmd8 の拡張子を追加し、関連付けでコード変換します。

.cmdu

cmd.exe /c type "%1">"%1.cmd" & "%1.cmd" %* & del "%1.cmd"

.cmd8

cmd.exe /c start /min /wait cmd /c chcp.com 65001 ^& cmd /u /c type "%1"^>"%1.$$$" & type "%1.$$$" >"%1.cmd" & "%1.cmd" %* & del "%1.$$$" "%1.cmd"

レジストリ定義は、

[HKEY_CLASSES_ROOT\.cmdu\shell\open\command]
@="cmd.exe /c type \"%1\">\"%1.cmd\" & \"%1.cmd\" %* & del \"%1.cmd\""

[HKEY_CLASSES_ROOT\.cmdu\shell\edit\command]
@="notepad.exe %1"

[HKEY_CLASSES_ROOT\.cmd8\shell\open\command]
@="cmd.exe /c start /min /wait cmd /c chcp.com 65001 ^& cmd /u /c type \"%1\"^>\"%1.$$$\" & type \"%1.$$$\" >\"%1.cmd\" & \"%1.cmd\" %* & del \"%1.$$$\" \"%1.cmd\""

[HKEY_CLASSES_ROOT\.cmd8\shell\edit\command]
@="notepad.exe %1"

« バッチファイルを暗号化する。 | トップページ | コンソールアプリをウィンドウアプリに化かす。 »