2010-07-20 15 views
14

If so ¿Cómo?Do Batch files support multiline variables

Sí, archivos por lotes son cojos, pero no puedo utilizar PowerShell, y no me siento como escribir una aplicación real para realizar esta tarea sencilla ....

edición

Lo que quiere algo parecido a

set var="this is a 
multi 
line 
string " 

Respuesta

14

O puede crear un carácter de línea nueva "real".

setlocal enableDelayedExpansion 
set NL=^ 


rem two empty line required 
echo first line !NL! second line 
set multi=Line1!NL!Line2 
set multi=!multi!!NL!Line3 
echo !Multi! 

Con esta variante de la nueva línea es un carácter "normal" en la cadena, por lo que las variables actuar normalmente y se puede asignar a otra variable, esto no es posible con la &echo. truco (que es útil para facilitar la Tareas).

+0

Esto es lo que quería originalmente. Gracias. –

11

¿Eso está bien?

@echo off 
set var=kur 
set var2=kur2 
echo var is = "%var%" and var2 is = %var2% 

edición
es que lo que quiere decir?

@echo off 
set nl=^& echo. 
echo this%nl%is%nl%multiline%nl%string 
+0

¡Trabajos! -------- –

+0

Gracias perfecto. –

+0

+1 Wow ... ¿cómo supiste que esto era lo que pretendía hacer? –

1

Y ahora - sin comandos auxiliares SET:

echo this is a & echo multi & echo line & echo string 
2
SET myFlags=^
    a^
    b^
    c 
+0

No funcionó para mí con 'echo% myFlags%' o 'echo! MyFlags!'. –

1

Ésta es una pregunta bastante viejo, pero me armó un híbrido de las soluciones de @Fabricio y @jeb que tanto ha funcionado correctamente y ha añadido cierta legibilidad:

setlocal enableDelayedExpansion 
set NL=^ 


rem two empty line required 
set var=this is a !NL!^
multi !NL!^
line !NL!^
string !NL! 

echo !var!