バッチファイルの文字化け'∩╗┐'の対応方法について
宣伝
Flutterに関する技術ブログを運営しています。
ご興味のある方は、よかったらご覧ください♪
本題
バッチファイルを実行すると、以下のようなエラーが発生しました。
'' is not recognized as an internal or external command,
operable program or batch file.
要約すると、「そんなコマンド知らん」です。
もちろん"∩╗┐"という文字はバッチファイルに入れいていません。
どうやら何かが文字化けし、正しいコマンドが実行されていないようです。
事象
このエラーが発生した状況は以下です。
ファイル文字コード:UTF-8
環境:Windows
バッチファイルをWindows既存アプリ「メモ帳」保存すると
1行目のコードに対し、該当の文字化けが発生します。
問題
バッチファイルの1行目のコードが正常に実施されません。
2行目以降は正常に実施されますが、意図した結果にならない可能性があります。
私の場合は「@echo off」を1行目に設定していたため、
処理自体は問題なく実施されましたが、「@echo off」が機能していないため、
全てのコメントが表示されてしまいました。
原因
全てのWindowsで起こる事象ではありませんが、
環境により「メモ帳」で保存すると、BOM付きのテキストデータに変換されます。
BOMとは、"Byte Order Mark"の略で、詳しくは以下サイトを参照ください。
参考サイト:UTF-8のBOM付き・BOM無しの違いと確認方法
BOM付きとなるとUTF-8データの場合、先頭3バイトに見えないデータが付与されています。
しかしバッチファイルはこれをコードと認識してしまうため、上記のエラーが発生します。
対策
検索すれば色々と方法はあったのですが、
個人的に以下の方法が最も簡単だった方法をご紹介します。
方法1
1.サクラエディタで対象のバッチファイルを開きます。
2.ファイルから「名前を付けて保存」をクリックし、
以下の「BOM」のチェックを外します。
3.「保存」をクリックすると、BOMが除去された内容で保存されます。
方法2
この方法はエラーを取り除く方法ではありませんが、
状況により、サクラエディタが使用できない場面での対象に有効です。
方法としては単純で、1行目のコードがエラーとなるならば、1行目に何も書かなければ、解決できます。
-空白行-
@echo off
ただし、先頭3文字にBOMが付与されているため、
バッチ実行時、最初に挙げたエラーは発生しますがそれだけで済みます。
以上が対応方法になります。
参考になれば幸いです。
Discussion