質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

Q&A

解決済

2回答

1676閲覧

バッチファイルでexit /bとした際に改行が入ってしまう原因と対処法を知りたいです

aaaich

総合スコア50

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

0グッド

1クリップ

投稿2021/11/27 00:17

コマンドプロンプトで以下のバッチファイルを読み込むと以下画像のように改行(1の下)が入ってしまいます。

echo 1 exit /b

イメージ説明

原因、対処法(改行が入らない方法)を教えていただけないでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答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
otn

総合スコア84804

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

aaaich

2021/11/27 02:01

こんな丁寧でわかりやすい回答ありがとうございます。 励みになります。
cx20

2021/11/27 02:11

otn さん、情報ありがとうございます。 > echo 1のあとに、1行以上の空行があってそのままファイルの終わりの場合にのみ、空行が表示されません。 確かに試した所そうなりました。何かしら理由があるのでしょうけど、謎ですね。。
otn

2021/11/27 17:13

バグでしょうね。
guest

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

cx20

総合スコア4633

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問