Можно ли поместить символ новой строки в строку echo в пакетном файле?[дубликат]

StackOverflow https://stackoverflow.com/questions/1721258

  •  19-09-2019
  •  | 
  •  

Вопрос

На этот вопрос уже есть ответ здесь:

Можно ли поместить символ новой строки в строку echo в пакетном файле?

По сути, я хочу иметь возможность делать эквивалент:

echo Hello\nWorld

Вы можете сделать это достаточно легко в Linux, но я не могу понять, как это сделать в Windows.

Это было полезно?

Решение

echo. выводит пустую строку.

Пример:

echo Hello
echo.
echo world

С принтами

Hello

world

Другие советы

Это может быть решено с помощью одного echo.

Вам нужен символ новой строки \n для этого.Существует несколько способов вставить новую строку в echo

1) В этом примере используется многострочный курсор для добавления новой строки в команду,
пустая строка обязательна для заполнения

echo Hello^

world

2) Следующее решение сначала создает переменную, которая содержит один символ перевода строки.

set \n=^


rem ** Two empty lines are required

Или создайте новую строку с немного измененной версией

(set \n=^
%=DONT REMOVE THIS=%
)

И используйте этот символ с замедленное расширение

setlocal EnableDelayedExpansion
echo Hello!\n!world

Чтобы использовать символ перевода строки с процентное расширение вам нужно создать более сложную последовательность

echo Hello^%\n%%\n%world

Или вы можете использовать Взлом новой строки

REM Creating a Newline variable (the two blank lines are required!)
set \n=^


set NL=^^^%\n%%\n%^%\n%%\n%
REM Example Usage:
echo There should be a newline%NL%inserted here.

Но только отложенное расширение новой строки работает надежно, в том числе и внутри кавычек.

После небольшого эксперимента я обнаружил, что это можно сделать, не выдавая двух отдельных эхо-команд, как описано в Как вы можете повторить перевод строки в пакетных файлах?.Однако, чтобы это заработало, вам понадобится текстовый редактор, который не переводит CR в CR + LF.

Тип:

@echo First Line

затем при включенном NumLock удерживайте нажатой клавишу ALT и введите 10 на цифровой клавиатуре, прежде чем отпустить ALT (вы должен используйте цифровую клавиатуру, а не цифровые клавиши верхнего ряда).При этом будет вставлен символ CR.Затем введите вторую строку.В зависимости от вашего редактора и того, как он обрабатывает CR по сравнению с CR + LF, вы можете получить:

@echo First Line◙Second Line

или

@echo First Line
Second Line

Это работает из командной строки и будет работать в пакетном файле до тех пор, пока текстовый редактор не переведет CR в CR + LF (что делают редакторы Windows / DOS, если вы не настроите их на это).Если CR преобразуется в CR + LF, или если вы используете просто LF, вторая строка интерпретируется как новая команда.

Однако я не могу понять, почему это было бы предпочтительнее, чем просто:

@echo First Line
@echo Second Line

Ахаха,

Я думаю, что у меня получилось кое-что достаточно близкое...

echo hello&echo.&echo world

Производит:

здравствуйте

Мир

эхо. или эхо(

сделаем пустую новую строку.Надеюсь, это будет полезно.

Я нашел это очень информативным, поэтому хотел опубликовать лучший пример, используя предоставленные ответы

Это обеспечивает хорошо отформатированное сообщение об использовании

if "%1" == """" goto usage

:usage
 echo  USAGE: %0 [Set properties using -D flag] [Ant Task to Run]  &
 echo.                                                             &
 echo        Availble Command line properties                      &
 echo        --------------------------------                      &  
...

Я думаю, что это невозможно.Вы могли бы использовать только ascii-символ для этого:http://www.asciitable.com/ Но это, возможно, приведет к сбою вашего пакетного файла.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top