Esto es un truco, pero funciona. Tiene la intención de replicar la capacidad del shell de Unix para invocar un comando en particular para procesar un archivo de shell. Así pues, aquí está la explicación:
::#!
líneas que comienzan con ::
están los comentarios en shell de Windows, por lo que este es sólo un comentario.
@echo off
No mostrar las líneas ejecutadas a partir de ahora. El @
al principio asegura que esta línea no se mostrará.
call scala %0 %*
ejecución de transferencia a la secuencia de comandos scala
. El %0
significa el nombre de este archivo (para que Scala lo pueda encontrar) y %*
son los parámetros que se pasaron en su ejecución.
Por ejemplo, supongamos que estas líneas están en un archivo llamado count.bat
, y lo invocó escribiendo count 1 2 3
. En este caso, esa línea ejecutará scala count 1 2 3
, en cuyo caso obtendrá un error. Debe invocarlo escribiendo count.bat
.
goto :eof
Finaliza la ejecución del script.
::!#
Otra línea de comentario.
Entonces, aquí está el truco ... Scala, una vez invocado, encontrará el archivo pasado como primer argumento, verificando si la primera línea es ::#!
, ignore todo hasta la línea ::!#
si es así, y luego ejecute el resto del archivo (las líneas después de ::!#
) como un script de Scala.
En otras palabras, no es el shell de Windows el que es inteligente, es Scala. :-)
Se usan los mismos argumentos en este archivo por lotes de Javascript http://stackoverflow.com/questions/4999395/how-does-this-windows-batch-file-work –