t8.dev

🇺🇸

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

公開日:2021/03/10
更新日:2021/08/16

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

心理学を使ったTODOアプリを開発している、@takasqrです。

心理学を使ったTODOアプリ | todo8

心理学を使ったTODOアプリ | todo8

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

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

イメージ的には、

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

echo test >> てすと.txt

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

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

原因

文字コードが原因でした。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に変更して保存しなおすと文字化けしなくなります。

結論

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

関連記事

batファイルやコマンドプロンプトでログを出力する

オススメ記事

5年間ほぼ毎日プログラミングの勉強をするためにやったこと
論文と本から学ぶ、プログラミング独学のコツ
目標達成率を高める if thenプランニングとは!?【本とアプリも紹介】