Подтвердить что ты не робот

Отбросить пустую (пустую) строку на консоль из командного файла Windows

При выводе сообщений о состоянии на консоль из командного файла Windows я хочу вывести пустые строки, чтобы разбить выход. Как это сделать?

4b9b3361

Ответ 1

Примечание. Хотя мой оригинальный ответ привлек несколько оборотов, я решил, что могу сделать гораздо лучше. Вы можете найти мой оригинальный (упрощенный и ошибочный) ответ в истории редактирования.

Если Microsoft намерена предоставить средства для вывода пустой строки из cmd.exe, Microsoft наверняка задокументировала бы такую ​​простую операцию. Именно это упущение побудило меня задать этот вопрос.

Итак, поскольку средство для вывода пустой строки из 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. Мои эксперименты в Windows 10 показывают, что все они создают пустую строку, независимо от того, существуют ли в текущем рабочем каталоге файлы с именами echo, echo+, echo,,..., echo]. (Обратите внимание, что мой вопрос предшествует выпуску Windows 10. Поэтому я допускаю, что более старые версии Windows могут вести себя по-другому.)

В этом ответе @jeb утверждает, что echo( всегда работает. Для меня, @jeb ответ подразумевает, что другие варианты менее надежны, но не дает никаких подробностей о том, почему это может быть. Обратите внимание, что @jeb внесла очень ценный контент в другие ссылки, которые я привел в этом ответе.


Вывод: Не используйте echo.. Из многих других вариантов, которые я встречал в источниках, которые я привел, поддержка этих двух выглядит наиболее авторитетной:

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.

Ответ 2

Любое из следующих трех вариантов работает для вас:

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.

Ответ 3

Часто используется "эхо".

Но это медленный процесс, и он может выйти из строя с сообщением об ошибке, так как cmd.exe будет искать сначала файл с именем "echo" (без расширения), и только когда файл не существует, он выводит пустую строку.

Вы можете использовать echo(. Это примерно в 20 раз быстрее, и он работает всегда. Единственным недостатком может быть то, что он выглядит странно.

Подробнее о различных вариантах ECHO:/\ находится в советах DOS: ECHO. FAILS, чтобы предоставить текст или пустую строку.