1. ホーム
  2. windows

[解決済み] Windowsのバッチファイルからコンソールに空行をエコーする [重複] [重複]

2022-04-22 21:56:52

質問

Windowsのバッチファイルからコンソールにステータスメッセージを出力する際、以下のように出力したい。 空白行 を使用して、出力を分割しています。どうすればよいでしょうか。

どのように解決するのですか?

注:最初の回答は何度もアップヴォートされましたが、もっと良い回答ができると判断しました。私の元の(単純で見当違いな)回答は編集履歴で見ることができます。

マイクロソフトが空行を出力する手段を提供する意図があった場合 cmd.exe このような簡単な操作であれば、マイクロソフトは必ず文書化していたはずです。この質問をする動機は、この欠落にあります。

で、空行を出力する手段がないので cmd.exe ではなく を実現するための提案であると考えるべきです。 ハック . ということは、空白行を cmd.exe というのは 保証 で動作する(または効率的に動作する)ように すべて という状況です。

それを踏まえて、以下、空行を出力するために推奨されている方法を cmd.exe . すべての推奨事項は echo コマンドを使用します。


echo.

これは、ほとんどの場合ではないにしても、多くの状況で機能します。 避けるべき は、その代替案よりも遅く、実際に失敗することがあるからです ( こちら , こちら そして こちら ). 具体的には cmd.exe という名前のファイルをまず探します。 echo を実行し、それを起動しようとする。もし echo が、たまたま現在の作業ディレクトリに存在した場合。 echo. で失敗します。

'echo.' is not recognized as an internal or external command,
operable program or batch file.


echo:
echo\

の末尾にある この回答 これらのコマンドは、例えばネットワークドライブの場所から実行された場合、遅くなる可能性があると著者は主張しています。遅くなる可能性のある具体的な理由は示されていません。しかし、ファイルシステムへのアクセスに関係しているのだろうと推測することはできます。(おそらく :\ は、Windowsのファイルシステムのパスで特別な意味を持つのでしょうか?)

しかし、これらのオプションが安全であると考える人もいるでしょう。 :\ は、ファイル名として使用できません。そのため、あるいは別の理由で echo: はSS64.comで推奨されている こちら .


echo(
echo+
echo,
echo/
echo;
echo=
echo[
echo]

この長ったらしい議論 には、これらすべてと思われるものが含まれています。これらのオプションのいくつかは、次のように推奨されています。 このSOの答え もあります。引用された議論の中で この記事 を推奨しているような内容で終わっています。 echo(echo: .

冒頭の私の質問には、Windowsのバージョンが指定されていません。Windows10で実験したところ、以下のようになりました。 すべて という名前のファイルがあるかどうかにかかわらず、空行を生成します。 echo , echo+ , echo, , ..., echo] は、現在の作業ディレクトリに存在します。(私の質問はWindows 10のリリースより前のものであることに注意してください。そのため、古いバージョンのWindowsでは動作が異なる可能性があることは認めます)。

この回答 , ジェブ は次のように主張しています。 echo( 常に が動作します。私には、@jebの回答は、他の選択肢の信頼性が低いことを暗示していますが、その理由については詳しく述べられていません。なお、@jebは、私がこの回答で引用した他の文献に多くの貴重な内容を提供してくれています。


結論 行う ない 使用 echo. . 私が引用した資料では、他にも多くの選択肢がありましたが、この2つのサポートが最も権威があるように見えます。

echo(
echo:

しかし、どちらを使っても必ずトラブルが起きないという強い根拠は見つかっていません。


使用例です。

@echo off
echo Here is the first line.
echo(
echo There is a blank line above this line.

期待される出力

Here is the first line.

There is a blank line above this line.