「・ソ」との出会い
ある時、作成したバッチファイルを実行したら以下のような現象に見舞われました。
件のバッチファイル(test.bat)
echo Akeome!
cmd で実行してみると...
C:\Users\XXX>C:\Users\XXX\OneDrive\Desktop\test.bat
C:\Users\XXX>・ソecho Akeome!
'・ソecho' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
C:\Users\XXX>
「・ソ」?実際のバッチファイルには書かれていないはずなのに...
こちらについて調査し、原因が分かったので備忘録として残します。
「・ソ」の原因
こちら、バッチファイルが「UTF-8(BOM付)」で作成されていたことが原因でした。
サクラエディタで開いたら右下に書いてあるやつです。文字コードてやつですね。
試しにこちらを「UTF-8」で保存しなおし実行したところ、正常に実行できました。
C:\Users\XXX>C:\Users\XXX\OneDrive\Desktop\test2.bat
C:\Users\XXX>echo Akeome!
Akeome!
C:\Users\XXX>
おまけ:BOMってなに
恥ずかしながら、今回の現象に出くわすまで私、「BOM」が何なのか理解してませんでした...
ついでにBOMについても調べてみたので、あわせて書いておきます。
BOMとは
一部のテキストファイルに付与される、文字コード識別子のことです。数バイトの特殊なデータがテキストファイルに付与されます。
Byte Order Mark の頭文字をとって BOM と呼ばれるようです。爆弾だと思ってた
一部WindowsアプリではBOMが無いと正常に文字コードをアプリ側が判断できず、文字化けしてしまうなどのことがあるようですが、最近のアプリではBOMがなくても正常に判断できるようになっているものが多いようです。
「・ソ」を見てみよう
BOMがテキストファイルに付与されるデータだとわかったので、実際にどんなデータが付与されているのか見てみます。
先ほどのバッチファイルをBOM付、BOMなしそれぞれバイナリエディタで見てみると、
BOM付のほうには先頭に「EFBBBF」と付与されていることがわかります。これが、UTF-8をBOM付で保存したときに付与されるBOMになります。
こいつが「・ソ」だったわけですね。
まとめ
BOMには気を付けよう。



