Windowsのコマンドプロンプトでbatファイルを実行したら文字化けする

ファイル名に日本語が含まれているとパスが通らない

ある日、batファイルを実行すると、ファイル名に日本語が含まれているパスの部分でうまく動きませんでした。

cmd.exeの画面を見ると、日本語のファイル名が文字化けしていました。

イメージ的には、

echo.batというbatファイルに、

echo test >> てすと.txt

と書いてあったとします。

実行すると、てすと.txtという名前のファイルができてほしいのに、ファイル名が縺ヲ縺吶→.txtとなってしまう感じです。

この記事を書いた人

@takasqr アプリケーション開発が大好きなエンジニア。Vue、Swift、Electrom などでアプリを作って公開している。AWS や Firebase などのクラウドサービスも好き。

原因

文字コードが原因でした。batファイルの文字コードがutf-8になっていて、コマンドプロンプトのデフォルトの文字コードがshift-jisなのでファイル名を解釈できなくてエラーになっていたようです。

解決策

解決策は3つあります。

  1. ファイル名を英数字のみにする
  2. batファイルの文字コードを変更する
  3. コマンドプロントの文字コードをutf-8に変更する

【解決策1】ファイル名を英数字のみにする

基本的にこれが一番楽だしおススメです。

【解決策2】コマンドプロントの文字コードをutf-8に変更する

コマンドプロンプトの文字コードを変更してbatファイルとあわせるやり方です。

コマンドプロンプトの文字コードを確認する。

chcp

コマンドプロントの文字コードをutf-8に変更するには、

chcp 65001

コマンドプロントの文字コードをShift-JISに戻すには、

chcp 932

を実行します。

コマンドプロントを一度閉じると設定も元に戻るので注意が必要です。

【解決策3】batファイルの文字コードを変更する

batファイルの文字コードを変更してコマンドプロンプトと合わせるやり方です。

batファイルをメモ帳で開いて、文字コードをANSIに変更して保存しなおすと文字化けしなくなります。

結論

プログラミングで使うファイル名やフォルダ名には日本語を使わない方が無難。