Можно ли поместить символ новой строки в строку echo в пакетном файле?[дубликат]
-
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/ Но это, возможно, приведет к сбою вашего пакетного файла.