コマンドプロンプトで以下のバッチファイルを読み込むと以下画像のように改行(1の下)が入ってしまいます。
echo 1 exit /b
原因、対処法(改行が入らない方法)を教えていただけないでしょうか。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
微妙な仕様ですね。バグかもしれません。
echo 1
のあとに、1行以上の空行があってそのままファイルの終わりの場合にのみ、空行が表示されません。
exit /b
等があった場合だけでなく、echo 1
が最終行の場合は、空行が表示されます。
echo 1
でなくdir
等で同じですね。
行番号をつけて書くと、
plain
1★空行が出るケース 21 dir 32 exit /b 4 51 dir 6 7★空行が出ないケース 81 dir 92
今までずっと空行表示が入るものだと思っていましたが、ファイル末尾に空行があり、そこを実行して終わるケースだけ、空行が出ないということなので、本来は空行が出るのが仕様で、出ないのはバグな気がします。
dir
のようなケースだと回避策は無い(パイプで、末尾の改行を削除するようなプログラムに渡せばいいですが)ですが、文字列表示のケースだと、他の方の回答のように、文字列表示時の改行を省けば、自動的な改行だけになります。
CMD
1set /p<NUL=1
のようにリダイレクトはイコールより前に書いてしまうのが見やすいし、間違いが無いです。
SET /P X=1 < NUL
だと、1
のあとに空白が表示されます。空白が出てもいいならいいのですが。
かといって空白を除こうと、SET /P X=1< NUL
のように数字の直後にリダイレクトの<
を書くと1<
というリダイレクトと見なされて意図した動作になりません。
投稿2021/11/27 01:57
編集2021/11/27 02:04総合スコア85949
0
ベストアンサー
「exit /b」は関係ありません。
「echo」コマンド自体で文字列を出力した際に、最後に改行が入る為です。
とうしても改行を消したい、という場合は、以下のような方法で消すことが出来るようです。(一般的な方法ではないので、お勧めはしませんが。。)
■ 【サンプル2通り】echo で改行しないで表示する | Windows バッチファイル
http://tooljp.com/bat_qa/Display-without-a-line-break-with-echo-709E.html
bat
1@echo off 2@SET /P X=1 < NUL 3
投稿2021/11/27 01:32
総合スコア4648
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/11/27 02:01
2021/11/27 02:11
2021/11/27 17:13