Как вы можете вставить новую строку из вывода пакетного файла?
Я хочу сделать что-то вроде:
echo hello\nworld
Что выведет:
hello
world
Используйте:
echo hello
echo.
echo world
echo hello & echo.world
Это означает, что вы можете определить & echo.
как константу для новой строки \n
.
Вот так, создайте .bat-файл со следующим содержимым:
@echo off
REM Creating a Newline variable (the two blank lines are required!)
set NLM=^
set NL=^^^%NLM%%NLM%^%NLM%%NLM%
REM Example Usage:
echo There should be a newline%NL%inserted here.
echo.
pause
Вы должны увидеть вывод, подобный следующему:
There should be a newline
inserted here.
Press any key to continue . . .
Очевидно, что вам нужен только код между операторами REM.
Ответ Кен, но с использованием задержек расширение.
setlocal EnableDelayedExpansion
(set \n=^
%=Do not remove this line=%
)
echo Line1!\n!Line2
echo Works also with quotes "!\n!line2"
Первый одиночный символ перевода строки создается и присваивается \Н-переменной. Это работает как курсор в конце строки пытается сбежать следующий символ, а если это перевод строки игнорируется и следующий символ считывается и сбежал (даже если это перевод строки). Потом вам нужно на третий перевод строки в конце текущей команды, то третья строка будет добавляться в ЛФ-переменной. Пакетные файлы имеют окончаний строк с CR/если только если являются важными, как CR'ы удаляются на этом этапе синтаксического анализа.
Преимущество использования задержки расширения, что нет особого характера работы на всех.
Эхо Строка1%НЧ%Строка2
потерпел бы неудачу, как анализатор прекращает парсинг в один символ перевода строки.
Больше объяснений за Так:длинные команд разбит на несколько строк в Vista/DOS пакетный (.bat файл) Так:как окна командного интерпретатора (CMD.EXE) парсить скрипты?
Редактировать: избежать Эхо.
Это не'т отвечать на вопрос, а вопрос был об одном "Эхо", что можно вывести несколько линий.
Но, несмотря на другие ответы, которые предполагает использование Эхо., чтобы создать новую строку, следует отметить, что
эхо.` это худшее, как это's очень медленно, и это может полностью провалиться, как cmd.exe поиск файла с именем " эхо " и попробовать запустить его.
Для печати просто пустую строку, вы можете использовать один из
echo,
echo;
echo(
echo/
echo+
echo=
Но использование Эхо.
, эхо\
или эхо:
следует избегать, поскольку они могут быть очень медленным, в зависимости от места, где будет выполняться сценарий, как сетевой диск.
Эхо.
Достаточно сказал.
Если вам это нужно в одной строке, используйте &
. Например,
echo Line 1 & echo. & echo line 3
будет выходной, как:
Line 1
line 3
Вот, скажем, вы хотите что-то попышнее, ...
set n=^&echo.
echo hello %n% world
Выходы
hello
world
Затем просто выбросить в %п%
, Когда вы хотите новую строку в оператор Echo. Это более близко к \п
, используемые в различных языках.
Ремонт
комплект N=
устанавливает переменную Н
равна:
Нулями^
следующий символ следовать:
&
значит делать другую команду в той же строке. Мы не'т волнует значение errorlevel(его эхо заявление для плачут вслух), так нет и усилитель; &
это необходимо.
Эхо.
Продолжает оператором Echo.
Все это работает, потому что вы на самом деле можете создать переменные, код, и использовать их в других командах. Это вроде как функция гетто, поскольку партия точно не самые продвинутые из языков сценариев оболочки. Это работает только потому, что партия'бедные использование переменных, не обозначив между ИНЦ символов, поплавки, канаты, и т. д. Естественно.
Если вы не хитрый, вы могли бы получить эту работу с другими вещами. Например, с его помощью эхо вкладку
set t=^&echo. ::there are spaces up to the double colon
Когда эхом чего-то, чтобы перенаправить в файл, несколько команд " эхо " не будет работать. Я думаю, может в ">>" по переадресации-это хороший выбор:
в <предварительно> Эхо привет > темп Эхо мира >> темп </пред>
Как Grimtron предлагает - вот небольшой пример, чтобы определить это:
@echo off
set newline=^& echo.
echo hello %newline%world
C:\>test.bat
hello
world
Если кто-то приходит сюда, потому что они ищут Эхо пустой строки с помощью MinGW сделать make-файл, я использовал
@КМД /с Эхо.
просто с помощью эхо.
причины process_begin ужасной: является CreateProcess(null, то эхо., ...) не удалось`. сообщение об ошибке.
Я надеюсь, что это помогает, по крайней мере, один человек там :)
Это работало для меня, без задержки расширения необходимо:
@echo off
(
echo ^<html^>
echo ^<body^>
echo Hello
echo ^</body^>
echo ^</html^>
)
pause
Он пишет вывод такой:
<html>
<body>
Hello
</body>
</html>
Press any key to continue . . .
Кен и решения Джеб работает хорошо.
Но новые линии создаются с только если персонаж и мне нужно символов crlf (Windows-версия).
Для этого, в конце скрипта, я пересчитал, если бы эти символы не экранируются.
Пример:
TYPE file.txt | FIND "" /V > file_win.txt
del file.txt
rename file_win.txt file.txt
Если нужно использовать известные \N в строковые литералы, которые могут быть переданы в переменную, можно написать код, как в Здравствуйте.летучая мышь скрипт ниже:
@echo off
set input=%1
if defined input (
set answer=Hi!\nWhy did you call me a %input%?
) else (
set answer=Hi!\nHow are you?\nWe are friends, you know?\nYou can call me by name.
)
setlocal enableDelayedExpansion
set newline=^
rem Two empty lines above are essential
echo %answer:\n=!newline!%
Таким образом многострочного вывода могут готовиться в одном месте, даже в другой scritpt или внешний файл, и напечатал в другой.
Линия разрыва проходит в строки переменной. Его значение должно быть заменено после на Эхо линейка расширяется, поэтому я использую команда setlocal enableDelayedExpansion чтобы включить восклицательных знаков, которые расширяют переменных по исполнению. И выполнение заменители \н с строки содержание (посмотреть на синтаксис помочь). Мы можем, конечно, использовать !новой строки! во время настройки ответ но \Н более удобно. Оно может быть передано извне (попытки Здравствуйте Р2\nd2 у), где никто не знает имя переменной, содержащей строку (Да, привет С3!новой строки!Р0* работает одинаково).
Выше примере могут быть уточнены на подпрограммы или отдельные партии, используется как назвать:mlecho Привет\пя'м вашим компьютером`:
:mlecho
setlocal enableDelayedExpansion
set text=%*
set nl=^
echo %text:\n=!nl!%
goto:eof
Обратите внимание, что дополнительная обратная косая черта выиграл'т допустить сценария с разбора \Н подстроки.
Вы можете использовать @Эхо
( @Эхо + [пробел] + [insecable пробел] )
Примечание: insecable пространства могут быть получены с помощью Alt+0160
Надеюсь, что это помогает :)
[править] Мда вы'вновь в порядке, мне это нужно в Makefile, он отлично работает там. Я думаю, мой ответ не приспособлен для пакетных файлов... моя ошибка.
Самый характер консервативный способ для достижения этой цели в системах Linux, С -Е
псевдоним - который интерпретирует Escape-символы, которые являются управляющими.
echo -e "hello\nworld"
Вот несколько других примеров