Как использовать символ новой строки в тексте в cmd batch? - PullRequest
11 голосов
/ 06 апреля 2009

Я бы хотел сделать

svn commit -m "<message>"

Но сообщение должно иметь две строки:

Commit by: firstuser
Bug track: 9283

Как добавить символ новой строки в сообщение? Я пробовал SHIFT + ENTER, CTRL + T, но это не работает. Я использую командную строку MS cmd.

Ответы [ 12 ]

12 голосов
/ 13 октября 2010

Я нашел ответ на Serverfault:

svn ci -m $'This is the first line\nThis is the second line'

Очевидно, это проблема с оболочкой .

12 голосов
/ 06 апреля 2009

Как насчет использования параметра -F для получения сообщения журнала из файла?

Тогда вы можете сделать это (не проверено):

ECHO Commit by: firstuser>SvnLog.txt
ECHO Bug track: 9283>>SvnLog.txt

SVN COMMIT -F SvnLog.txt
6 голосов
/ 24 июня 2011

У меня была такая же проблема, и хотя ответ Клэса Могрена не работает с cmd.exe, он заставил меня задуматься, есть ли в Windows оболочка, которая может это сделать.
И, конечно, есть ... PowerShell.

Используя оболочку PowerShell, вы можете добиться этого с помощью следующей команды:

svn ci -m "reference to Ninject fixed`nsome ignores added"

Обратите внимание на комбинацию backqoute и n в сообщении

`n
6 голосов
/ 05 апреля 2011

Для создания новой строки в сообщении svn лучше всего использовать афорию с дополнительным файлом сообщений.

Но это можно сделать и с помощью -m

Образец с командным файлом

@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
set lf=^


rem ** Two empty lines are neccessary for creating the Linefeed
svn commit -m "A!lf!Message!lf!with!LF!newline"

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

svn commit -m ^"This is a^
MORE?
MORE?my newline"
5 голосов
/ 24 октября 2014

Просто напишите svn ci -m "old line нажмите Введите и введите следующую строку new line"

Example

Это намного проще, чем использовать файл.

3 голосов
/ 05 апреля 2011

Вы можете определить новую строку следующим образом:

set newline=^& echo.

Затем вы можете использовать символ новой строки в других выражениях, например: (без кавычек)

echo This is the first line%newline%This is the second line
echo "This is the first line"%newline%"This is the second line"

или с дополнительной кареткой, например:

set text=This is the first line^%newline%This is the second line

Возможно, вы можете поиграть с этим, но помните комбинацию с кавычками!

1 голос
/ 09 ноября 2011

Я использую следующий метод, и он работает:

svn commit {list of files to commit}

После ввода вышеуказанной команды и нажатия клавиши ввода откроется редактор. Напишите свой комментарий и выйдите из редактора. После выхода из редактора команда commit будет выполнена, и все, что вы написали в редакторе, будет зафиксировано.

0 голосов
/ 02 апреля 2019

Дополнительный пример к @ jeb's answer

Ответ:

set br= ^
<</br (newline)>>
<</br>>

пример:

@echo off
setlocal enableExtensions enableDelayedExpansion
rem cd /D "%~dp0"
set br= ^


rem br, can't be saved to a var. by using %..%;


set "t=t1!br!t2!br!t3"

for /f "usebackq tokens=* delims=" %%q in ('!t!') do (
    echo %%q
)


:scIn
rem endlocal
pause
rem exit /b

; выход:

t1
t2
t3
Press any key to continue . . .
0 голосов
/ 27 сентября 2016

Напишите сообщение в текстовом редакторе и просто скопируйте и вставьте его в терминал (редактор команд).

  1. Просто введите сообщение в текстовом редакторе в несколько строк.

    -m "Строка сообщения

    Строка сообщения 2

    Строка сообщения 3 "

  2. Введите необходимую команду в редакторе команд.

    команда SVN

  3. Скопируйте и вставьте содержимое сообщения из текстового редактора в редактор команд.

    svn command -m "Строка сообщения 1.

    Строка сообщения 2

    Строка сообщения 3 "

4.Введите Enter.

5. Работает:)

0 голосов
/ 30 января 2013

Это работает для нас:

приватный статический финал char LF = (char) 13;

setMessage("Test"  + LF + "Jij" + LF + "Dit" + LF + "Effe");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...