Windowsのバッチファイルからステータスメッセージをコンソールに出力するとき、出力を分割するために空白行を出力したいのですが。どうやってこれをするの?
注:私の最初の答えはいくつかの支持を集めましたが、私はもっとうまくやれると決めました。あなたは私の最初の(単純化されたそして誤った)答えを編集履歴の中に見つけることができます。
Microsoftがcmd.exe
から空白行を出力する手段を提供する意図がある場合、Microsoftはそのような単純な操作を文書化しているはずです。私がこの質問をするように動機づけたのは、この省略です。
そのため、cmd.exe
から空行を出力する手段はnotであるため、これを達成する方法についての提案はhack。つまり、cmd.exe
からギャランティとなる空白行をallに出力する既知の方法はありません。シチュエーション.
そのことを念頭に置いて、cmd.exe
から空白行を出力するために推奨されている方法について説明します。すべての推奨事項は、さまざまなecho
コマンドに基づいています。
echo.
これはほとんどの状況ではないにしても多くの状況で機能しますが、それは避けなければならないです。他のものより遅く、実際には失敗する可能性があります( here 、 here 、および 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が現在の作業中にecho
、echo+
、echo,
、...、echo]
という名前のファイルが存在するかどうかに関係なく空白行を生成するディレクトリ。 (私の質問はWindows 10のリリースより前のものであることに注意してください。だから私は古いバージョンのWindowsが異なった振る舞いをする可能性を認めます。)
In this answer 、 @ jeb はecho(
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.
以下の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.
「エコー」を使用するためのヒントがよくあります。
Cmd.exeは最初に 'echo'という名前のファイルを検索し(拡張子なし)、ファイルが存在しない場合にのみ空行を出力するため、それは遅く、エラーメッセージで失敗する可能性があります。
echo(
を使うことができます。これは約20倍速く、そしてそれは常に機能します。唯一の欠点は奇妙に見えることです。
さまざまなECHO:/\
の変種についての詳細は DOSのヒント:ECHO。テキストまたは空白行を入れることはできません です。