サーカムフレックス「^」で改行をエスケープした複数行の文字列の一行目を消そうとして More +1 したら、一行も出力されない。。。
- Command Prompt
C:\>type newline.cmd @Echo Off Set STR=^ Some string including^ newline. Setlocal ENABLEDELAYEDEXPANSION Echo.!STR! | More +1 Endlocal C:\>newline.cmd C:\>
ファイルへリダイレクトして確認したら、サーカムフレックス「^」でエスケープした改行は CRLF ではなくて LF。。。
Set 変数 | (command) を使うと……
- Command Prompt
C:\>type newline.cmd @Echo Off Set STR=^ Some string including^ newline. Set STR | More +1 C:\>newline.cmd Some string including newline. C:\>
……成功するから、ほかのコマンドにリダイレクトするときは、バッチファイルでも遅延評価を使わないで
Set 変数名 | (command)
がいいみたい。