こんにちは!Windows環境でシステム周りの作業をしていると、たまに「ん?何だこれ……」という奇妙な挙動に遭遇することってありますよね。
先日、とあるバッチファイル(.bat)をWindows標準の「メモ帳」で開いたところ、なぜか特定の1行だけが次の行とベタッとくっついて表示される現象が起きました。
「いやいや、ちゃんと改行したはずでは?」と不審に思い、高機能テキストエディタの「サクラエディタ」に放り込んで制御文字を確認してみたところ、原因が一発で判明しました。
犯人はWindows環境の天敵「LF(0A)」だった
サクラエディタで確認したところ、通常の正常な行はWindows標準の改行コードである [CRLF](バイナリで言うと 0D0A) になっているのに対し、そのくっついていた部分だけが、なんとLinuxなどで使われる [LF](バイナリの 0A) になっていました。
【正常な行】 〇〇〇〇〇 [CRLF] (0D 0A)
【問題の行】 〇〇〇〇〇 [LF] (0A) ←コイツ!
最近のWindowsのメモ帳は賢くなったので「LF」だけの改行でもある程度認識してくれるようにはなっていますが、同一ファイル内で改行コードが混在していたり、特殊な構文の書き方をしてしまったりすると、処理が追いつかずに1行にドッキングしてしまうことがあります。
バッチファイルでこれが起きると、最悪の場合コマンドが正しく認識されずにエラーで落ちる原因にもなるので、地味にスルーできない問題です。
「作ったやつ、誰だ〜〜!」と言いたくなる瞬間
このファイル、元々は他の人が作成したものなのですが、
-
MacやLinux環境(VS Codeなど)で直接編集してそのまま保存したのか
-
あるいはGitから引っ張ってきたときに自動変換の挙動がバグったのか……
いずれにせよ、「Windowsで動かすファイルなんだから、改行コードはCRLFに統一しておいてくれよ〜!」と、心の中でツッコミを入れずにはいられませんでした(笑)。
サクラエディタ側で改行コードをすべて「CRLF」に一括置換して保存し直したところ、メモ帳でも無事に綺麗に表示され、バッチも正常に動くようになりました。
まとめ:異変を感じたらサクラエディタ等の別エディタで確認を!
Windows標準のメモ帳だけを見ていると気づきにくい「改行コードの混在問題」。 もしファイルの見た目や挙動がおかしいなと思ったら、まずはサクラエディタなどの編集ソフトで「制御文字(改行コード)」を表示させてみるのが一番の近道ですね。
皆さんの周りにも、ひっそりと「0A」が紛れ込んだバッチファイルが眠っているかもしれません。チームで開発・保守をするときは、エディタの設定で改行コードが固定されているか、今一度チェックしてみましょう!
