web-dev-qa-db-ja.com

Windowsバッチファイルからコンソールに空白(空)の行をエコーする

Windowsのバッチファイルからステータスメッセージをコンソールに出力するとき、出力を分割するために空白行を出力したいのですが。どうやってこれをするの?

112
DavidRR

注:私の最初の答えはいくつかの支持を集めましたが、私はもっとうまくやれると決めました。あなたは私の最初の(単純化されたそして誤った)答えを編集履歴の中に見つけることができます。

Microsoftがcmd.exeから空白行を出力する手段を提供する意図がある場合、Microsoftはそのような単純な操作を文書化しているはずです。私がこの質問をするように動機づけたのは、この省略です。

そのため、cmd.exeから空行を出力する手段はnotであるため、これを達成する方法についての提案はhack。つまり、cmd.exeからギャランティとなる空白行をallに出力する既知の方法はありません。シチュエーション.

そのことを念頭に置いて、cmd.exeから空白行を出力するために推奨されている方法について説明します。すべての推奨事項は、さまざまなechoコマンドに基づいています。


echo.

これはほとんどの状況ではないにしても多くの状況で機能しますが、それは避けなければならないです。他のものより遅く、実際には失敗する可能性があります( herehere 、および here を参照)。具体的には、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]

この長々しい議論 は私がこれらすべてになると信じるものを含みます。これらのオプションのいくつかは this SO answer でも推奨されています。引用された議論の中で、 この記事echo(echo:のための推薦であるように思われるもので終わります。

このページの上部にある私の質問は、Windowsのバージョンを指定していません。 Windows 10での私の実験では、これらのallが現在の作業中にechoecho+echo,、...、echo]という名前のファイルが存在するかどうかに関係なく空白行を生成するディレクトリ。 (私の質問はWindows 10のリリースより前のものであることに注意してください。だから私は古いバージョンのWindowsが異なった振る舞いをする可能性を認めます。)

In this answer@ jebecho(alwaysが動くと主張します。私にとっては、@ jebの答えは、他のオプションは信頼性が低いということを意味していますが、それがなぜそうなるのかについての詳細を提供していません。 @jebは、私がこの回答で引用した他の参考文献に多くの価値あるコンテンツを提供してくれたことに注意してください。


結論:notecho.を使ってください。私が引用した情報源で私が遭遇した他の多くのオプションのうち、これら二つのサポートは最も権威があるようです。

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.
74
DavidRR

以下の3つのオプションのどれでもあなたのために働きます:

echo[

echo(

echo. 

例えば:

@echo off
echo There will be a blank line below
echo[
echo Above line is blank
echo( 
echo The above line is also blank.
echo. 
echo The above line is also blank.
122
Sunny

「エコー」を使用するためのヒントがよくあります。

Cmd.exeは最初に 'echo'という名前のファイルを検索し(拡張子なし)、ファイルが存在しない場合にのみ空行を出力するため、それは遅く、エラーメッセージで失敗する可能性があります。

echo(を使うことができます。これは約20倍速く、そしてそれは常に機能します。唯一の欠点は奇妙に見えることです。

さまざまなECHO:/\の変種についての詳細は DOSのヒント:ECHO。テキストまたは空白行を入れることはできません です。

40
jeb