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

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

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

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

echo Hello\nWorld

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

4b9b3361

Ответ 1

echo. печатает пустую строку.

Пример:

echo Hello
echo.
echo world

печатает

Hello

world

Ответ 2

Его можно решить с помощью одного эха.

Для этого вам нужен символ новой строки \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

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

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.

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

Ответ 3

После небольшого эксперимента я обнаружил, что это возможно сделать без выдачи двух отдельных команд эха, как описано в Как вы можете повторить новую строку в пакетных файлах?. Однако, чтобы заставить его работать, вам понадобится текстовый редактор, который не преобразует 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

Ответ 4

Ахаха,

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

echo hello&echo.&echo world

Выдает:

Привет

мир

Ответ 5

эхо. или эхо-сигнала (

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

Ответ 6

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

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

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

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

Ответ 7

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