Haga eco de una línea en blanco (vacía) a la consola desde un archivo por lotes de Windows [duplicado]
Al enviar mensajes de estado a la consola desde un archivo por lotes de Windows, quiero generar líneas en blanco para dividir la salida. ¿Cómo hago esto?
Cualquiera de las siguientes tres opciones funciona para usted:
echo[
echo(
echo.
Por ejemplo:
@echo off
echo There will be a blank line below
echo[
echo Above line is blank
echo(
echo The above line is also blank.
echo.
echo The above line is also blank.
Nota: Aunque mi respuesta original atrajo varios votos positivos, decidí que podía hacerlo mucho mejor. Puede encontrar mi respuesta original (simplista y equivocada) en el historial de edición.
Si Microsoft hubiera tenido la intención de proporcionar un medio para generar una línea en blanco desde cmd.exe
, seguramente habría documentado una operación tan simple. Es esta omisión la que me motivó a hacer esta pregunta.
Entonces, debido a que nocmd.exe
está documentado un medio para generar una línea en blanco , podría decirse que se debería considerar cualquier sugerencia sobre cómo lograr esto como un truco . Eso significa que no existe ningún método conocido para generar una línea en blanco que garantice que funcione (o que funcione de manera eficiente) en todas las situaciones.cmd.exe
Con eso en mente, aquí se analizan los métodos que se han recomendado para generar una línea en blanco desde cmd.exe
. Todas las recomendaciones se basan en variaciones del echo
comando.
echo.
Si bien esto funcionará en muchas situaciones, si no en la mayoría, se debe evitar porque es más lento que sus alternativas y, de hecho, puede fallar (consulte aquí , aquí y aquí ). Específicamente, cmd.exe
primero busca un archivo con nombre echo
e intenta iniciarlo. Si un archivo nombrado echo
existe en el directorio de trabajo actual, echo.
fallará con:
'echo.' is not recognized as an internal or external command,
operable program or batch file.
echo:
echo\
Al final de esta respuesta , el autor sostiene que estos comandos pueden ser lentos, por ejemplo, si se ejecutan desde una ubicación de unidad de red. No se proporciona una razón específica para la posible lentitud. Pero se puede inferir que puede tener algo que ver con el acceso al sistema de archivos. (¿Quizás porque :
y \
tiene un significado especial en la ruta del sistema de archivos de Windows?)
Sin embargo, algunos pueden considerar que estas son opciones seguras ya que :
no \
pueden aparecer en el nombre de un archivo. Por esa u otra razón, echo:
SS64.com lo recomienda aquí .
echo(
echo+
echo,
echo/
echo;
echo=
echo[
echo]
Esta larga discusión incluye lo que creo que son todos estos. Varias de estas opciones también se recomiendan en esta respuesta SO . Dentro de la discusión citada, esta publicación termina con lo que parece ser una recomendación para echo(
y echo:
.
Mi pregunta en la parte superior de esta página no especifica una versión de Windows. Mi experimentación en Windows 10 indica que todos estos producen una línea en blanco, independientemente de si existen archivos llamados echo
, echo+
, echo,
, ... echo]
en el directorio de trabajo actual. (Tenga en cuenta que mi pregunta es anterior al lanzamiento de Windows 10. Por lo tanto, admito la posibilidad de que las versiones anteriores de Windows se comporten de manera diferente).
En esta respuesta , @jeb afirma que echo(
siempre funciona. Para mí, la respuesta de @jeb implica que otras opciones son menos confiables, pero no proporciona ningún detalle de por qué podría ser así. Tenga en cuenta que @jeb contribuyó con contenido muy valioso a otras referencias que he citado en esta respuesta.
Conclusión : no utilizarecho.
. De las muchas otras opciones que encontré en las fuentes que he citado, el apoyo a estas dos parece el más autorizado:
echo(
echo:
Pero no he encontrado ninguna evidencia sólida de que el uso de cualquiera de estos siempre esté libre de problemas.
Uso de ejemplo:
@echo off
echo Here is the first line.
echo(
echo There is a blank line above this line.
Rendimiento esperado:
Here is the first line.
There is a blank line above this line.
A menudo existe el consejo de utilizar "eco".
Pero eso es lento y podría fallar con un mensaje de error, ya que cmd.exe buscará primero un archivo llamado 'echo' (sin extensión) y solo cuando el archivo no existe generará una línea vacía.
Podrías usar echo(
. Esto es aproximadamente 20 veces más rápido y siempre funciona. El único inconveniente podría ser que parezca extraño.
Más información sobre las diferentes ECHO:/\
variantes se encuentra en los consejos de DOS: ECHO. NO puede proporcionar texto o línea en blanco .