- 文字コードを変えて、echoしてファイルにリダイレクトすればいけるもんだと思ったら謎な挙動だったのでメモ
人様のマシンで実行してもらうのでコマンドプロンプトのフォントを変えるとかそういう操作もなしにしたかったという前提あり
結果として、日本語入力が可能な状態で変数に出しておかないといけないっぽい
検証用のバッチ
@echo off @REM Shift_JIS chcp 932 set HOGE=ほげ echo ほげ>sample1.txt echo %HOGE%>sample2.txt @REM UTF-8 chcp 65001 set HOGEHOGE=ほげほげ echo ほげ>sample3.txt echo %HOGE%>sample4.txt echo %HOGEHOGE%>sample5.txt nkf32.exe -g sample1.txt nkf32.exe -g sample2.txt nkf32.exe -g sample3.txt nkf32.exe -g sample4.txt nkf32.exe -g sample5.txt pause
- バッチ実行の結果がこちら
- nkfの結果は想定通り
Active code page: 65001 Shift_JIS Shift_JIS UTF-8 UTF-8 UTF-8 Press any key to continue . . .
- しかし、実際にsample3~5.txtファイルを開いてみるとこんな感じ
- sample4.txtだけが期待したファイルになっている
- まとめると、こんな感じのバッチになる
@echo off @REM デフォルトはShift_JIS set HOGE=ほげ chcp 65001 echo %HOGE%>sample.txt pause