¿Es posible poner un carácter de nueva línea en una línea de eco en un archivo por lotes? [duplicar]

StackOverflow https://stackoverflow.com/questions/1721258

  •  19-09-2019
  •  | 
  •  

Pregunta

    

Esta pregunta ya tiene una respuesta aquí:

         

¿Es posible poner un carácter de nueva línea en una línea de eco en un archivo por lotes?

Básicamente quiero ser capaz de hacer el equivalente a:

echo Hello\nWorld

Usted puede hacer esto con bastante facilidad en Linux, pero no puedo encontrar la manera de hacerlo en Windows.

¿Fue útil?

Solución

echo. imprime una línea en blanco.

Ejemplo:

echo Hello
echo.
echo world

impresiones

Hello

world

Otros consejos

Se puede resolverse con una sola eco.

Es necesario un \n carácter de nueva línea para esto. Hay varias maneras de obtener una nueva línea en el echo

1) En este ejemplo se utiliza el símbolo de intercalación de varias líneas para añadir una nueva línea en el comando, España se requiere que la línea de vacío

echo Hello^

world

2) La siguiente solución crea primero una variable que contiene un solo carácter de avance de línea.

set \n=^


rem ** Two empty lines are required

O crear la nueva línea con una versión ligeramente modificada

(set \n=^
%=DONT REMOVE THIS=%
)

Y el uso de este personaje con expansión retardada

setlocal EnableDelayedExpansion
echo Hello!\n!world

Para utilizar un carácter de avance de línea con el expansión ciento es necesario crear una secuencia más compleja

echo Hello^%\n%%\n%world

O puede utilizar el Nueva línea piratear

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.

Sin embargo, sólo la expansión retardada de la nueva línea funciona fiable, también en el interior de las cotizaciones.

Después de un poco de experimentación descubrí que es posible hacerlo sin la emisión de dos comandos de eco separadas como se describe en ¿Cómo se puede eco de una nueva línea en archivos por lotes? . Sin embargo, para que funcione se necesita un editor de texto que no se traduce a CR CR + LF.

Tipo:

@echo First Line

luego con bloqueo numérico, mantenga pulsada la tecla ALT y escriba 10 en el teclado numérico antes de soltar ALT (que debe utilizar el teclado numérico, no las teclas numéricas de la fila superior). Esto insertará un carácter CR. A continuación, escriba la segunda línea. Dependiendo de su editor y cómo se maneja LC en comparación con CR + LF puede obtener:

@echo First Line◙Second Line

o

@echo First Line
Second Line

Esto funciona desde la línea de comandos y funcionará en un archivo por lotes, siempre que el editor de texto no se traduce a CR CR + LF (que los editores de Windows / DOS hacer a menos que ellos no configurar). Si el CR se convierte en CR + LF, o si se utiliza solo LF, la segunda línea se interpreta como un nuevo comando.

Sin embargo, no veo por qué esto sería preferible a simplemente:

@echo First Line
@echo Second Line

Ajaja,

Creo que he trabajado algo lo suficientemente cerca ...

echo hello&echo.&echo world

Produce:

hola

mundo

eco. o echo (

lo hará la nueva línea en blanco. Espero que esto es útil.

Me pareció muy informativo, por lo que quería publicar un mejor ejemplo usando las respuestas proporcionadas

Esto proporciona un mensaje de uso con un formato agradable

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

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

Creo que no es posible. Sólo se podía probar un ascii caracteres para esto: http://www.asciitable.com/ Pero esto quizá bloquear el archivo por lotes.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top