2009-04-06 14 views
10

me gustaría hacer¿Cómo se usa el carácter de nueva línea en el texto en lote de cmd?

svn commit -m "<message>" 

Pero el mensaje debería tener dos líneas:

Commit by: firstuser 
Bug track: 9283 

cómo agregar carácter de nueva línea en el mensaje? Intenté con MAYÚS + ENTRAR, CTRL + T pero no funciona. Yo uso MS cmd línea de comando.

+0

Muéstranos el archivo por lotes, por lo menos la parte pertinente, por lo que puede ayudar. – aphoria

+0

svn commit --message "Confirmar por: firstuser Bug track: 9283" - Este es mi archivo por lotes. Y el problema es cómo poner una nueva línea para que funcione –

Respuesta

11

Cómo sobre el uso del parámetro -F para obtener el mensaje de registro de un archivo?

Entonces, usted podría hacer esto (no probado):

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

SVN COMMIT -F SvnLog.txt 
+0

Parece que es la única solución –

+0

Hay otra opción si puede usar PowerShell (vea mi respuesta) –

-1

intentar algo como esto:

eco Message1 & eco Message2 & eco Message3

+0

¿Cómo resolver mi problema con este enfoque? –

0

El problema es que "entrar" (ASCII 13) envía el comando. Así que hay una "línea nueva"

uso alt + 10 (presione ALT, escriba el número en el numberblock, la liberación alt)

+0

Lo he intentado. Tengo una nueva línea en la ventana de comandos, pero SVN obtiene solo la primera línea. –

9

he encontrado la respuesta a más de Serverfault:

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

Al parecer es un shell-problem.

+3

Esto no funciona con cmd.exe en Windows ya que la solución está basada en linux shell haciendo el trabajo no svn client. Sin embargo, el hilo al que hizo referencia me hizo pensar y encontrar otra opción. –

+0

Esto funciona bien en Linux, aunque solo funciona con $ 'not $ "así que asegúrese de que la cadena solo se cite. – sibaz

+0

Su respuesta solo se aplica a linux – AaA

2

Se puede definir la nueva línea de la siguiente manera:

set newline=^& echo. 

A continuación, puede utilizar la nueva línea en otras declaraciones, como esto: (sin comillas)

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

o con un acento circunflejo adicional, de esta manera:

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

Quizás puedas jugar con eso, ¡pero recuerda la combinación con comillas!

+0

Lo anterior probablemente ** no ** funcione dentro de los parámetros de ** svn **. Puede funcionar dentro de los parámetros para otros scripts por lotes, dependiendo de cómo los guionicen (posiblemente se necesitan correcciones adicionales). Sin embargo, definitivamente no es recomendable. – mousio

+0

En algunos casos se comporta como una nueva línea, pero no crea un carácter de nueva línea en la variable. Puede probarlo con 'establecer nueva línea' para ver el contenido real. – jeb

+0

Esto se debe a que el" & echo. "se transmite hasta que se interpreta (o no). – mousio

5

Para crear una nueva línea en un mensaje svn la mejor manera es la de aphoria con un archivo de mensaje adicional.

Pero se puede hacer también con la muestra -m

con un archivo por lotes

@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" 

También podría utilizarlo en la línea de comandos

svn commit -m ^"This is a^ 
MORE? 
MORE?my newline" 
5

que tenía el mismo problema y aunque la respuesta de Claes Mogren no funciona con cmd.exe, me hizo pensar si hay un shell en Windows que podría hacer eso.
Y, por supuesto, está ... PowerShell.

uso de PowerShell shell se puede lograr esto usando los siguientes comandos:

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

Aviso la combinación de backqoute yn en el mensaje

`n 
1

uso el siguiente método y funciona:

svn commit {list of files to commit} 

Después de escribir el comando anterior y presionar enter, una edición o se abrirá Escriba su comentario allí y salga del editor. Al salir del editor, el comando de confirmación se ejecutará y todo lo que escribió en el editor se comprometerá también.

0

Esto funciona para nosotros:

privada estática LF Char final = (char) 13;

setMessage("Test" + LF + "Jij" + LF + "Dit" + LF + "Effe"); 
5

Sólo tiene que escribir svn ci -m "old line pulse Enter a continuación, escriba la siguiente línea new line"

Example

Esto es mucho más fácil que usar el archivo.

+0

¿Cómo se presiona 'Enter' cuando se ejecutan comandos en ** lote **? – AaA

+0

@ LukasIgnatavičius, ¡no sabía que había una tecla 'Enter' en el teclado! La pregunta es cómo hacerlo en un lote o en un archivo ** '* .bat' **, mira las etiquetas de pregunta. al presionar Entrar no funciona en los archivos por lotes. en caso de que no haya oído hablar de [archivos por lotes] (https://en.wikipedia.org/wiki/Batch_file) – AaA

0

Escriba el mensaje en el editor de texto y simplemente cópielo y péguelo en el terminal (editor de comandos).

  1. Simplemente escriba el mensaje en un editor de texto en varias líneas.

    -m "Línea de señalización

    Línea de señalización 2

    avisos 3"

  2. Escriba el comando deseado en el Editor de comandos.

    comando svn

  3. Copiar y pegar el contenido del mensaje del editor de texto para los comandos del editor.

    svn comando -m "Línea de señalización 1.

    Línea de señalización 2

    avisos 3"

4.Execute Intro.

5.It funciona :)

Cuestiones relacionadas