plano - Una sola línea con múltiples comandos usando el archivo por lotes de Windows
manejo de variables en batch (1)
&
entre dos comandos simplemente resulta en la ejecución de ambos comandos independientemente del resultado del primer comando. El comando a la derecha de &
se ejecuta después del comando dejado de &
terminado independientemente en caso de éxito o error del comando anterior, es decir, independiente en el valor de salida / retorno del comando anterior.
&&
da como resultado una ejecución condicional del segundo comando. El segundo comando se ejecuta solo si el primer comando fue exitoso, lo que significa que salió con el código de retorno 0.
Para una explicación alternativa, ver Ejecución condicional .
dir & md folder1 & rename folder1 mainfolder
es por lo tanto igual
dir
md folder1
rename folder1 mainfolder
Un reemplazo multilínea para
dir && md folder1 && rename folder1 mainfolder
sería
dir
if not errorlevel 1 (
md folder1
if not errorlevel 1 (
rename folder1 mainfolder
)
)
if not errorlevel 1
significa que el comando before no terminó con un código de salida mayor a 0 . Como los comandos dir
y md
nunca salen con un valor negativo, solo con 0 o mayor (como casi todos los comandos y aplicaciones de consola) y el valor 0 es el código de salida para el éxito, este es un método correcto para probar la ejecución exitosa de dir
y md
. Consulte el artículo de soporte de Microsoft Prueba para un nivel de error específico en archivos por lotes .
Otros temas útiles sobre desbordamiento de pila sobre errorlevel:
- ¿Qué comandos internos de cmd.exe borran el ERRORLEVEL a 0 cuando tiene éxito?
- ¿Cuáles son los valores de ERRORLEVEL establecidos por los comandos internos de cmd.exe?
Para la respuesta a su tercera pregunta, consulte mi respuesta sobre ¿Cómo llamar a un archivo por lotes en la carpeta principal del archivo por lotes actual? donde he explicado las diferencias al ejecutar un archivo por lotes con una call
comando o con start
o con ninguno de esos 2 comandos dentro de un archivo por lotes.
Intento entender cómo funcionan múltiples comandos en una sola línea de comando en un archivo por lotes.
dir & md folder1 & rename folder1 mainfolder
Y otro caso con comandos similares, pero &
sustituido por &&
.
dir && md folder1 && rename folder1 mainfolder
1. ¿Cuál es la diferencia entre estos dos casos?
Otra cosa que quiero preguntar:
One-liner batch.bat
:
dir & md folder1 & rename folder1 mainfolder
Multi-liner batch.bat
:
dir
md folder1
rename folder1 mainfolder
2. ¿Son estos de una sola línea y multi-línea iguales en términos de procedimiento de archivo por lotes?
Y una cosa más que me gustaría saber:
3. Si llamo a otros archivos por lotes desde main.bat, ¿se ejecutan de manera independiente y simultánea? ¿El archivo principal por lotes no espera para finalizar los procedimientos en otros archivos por lotes? ¿Como hacer eso?