Varios comandos en una sola línea en un archivo por lotes de Windows

En Unix, podemos poner múltiples comandos en una sola línea como esta:

$ date ; ls -l ; date 

Intenté algo similar en Windows:

  > echo %TIME% ; dir ; echo %TIME 

Pero imprimió el tiempo y no ejecuta el comando dir .

¿Cómo puedo conseguir esto?

Utilizar:

 echo %time% & dir & echo %time% 

Esto es, desde la memoria, equivalente al separador de punto y coma en bash y otras capas UNIXy.

También hay && (o || ) que solo ejecuta el segundo comando si el primero tuvo éxito (o falló), pero el símbolo comercial & es lo que está buscando aquí.


Sin embargo, es probable que le dé el mismo tiempo, ya que las variables de entorno tienden a evaluarse en lectura en lugar de en ejecución.

Puede solucionar esto activando la expansión retardada:

 pax> cmd /v:on /c "echo !time! & ping 127.0.0.1 >nul: & echo !time!" 15:23:36.77 15:23:39.85 

Eso es necesario desde la línea de comando. Si estás haciendo esto dentro de un script, puedes usar setlocal :

 @setlocal enableextensions enabledelayedexpansion @echo off echo !time! & ping 127.0.0.1 >nul: & echo !time! endlocal