2011-07-12 616 views
9

En Programación en Scala, proporciona una descripción sobre cómo ejecutar scripts Scala a partir de archivos por lotes (link).Scripts Scala en archivos por lotes de Windows

Para Windows

::#! 
    @echo off 
    call scala %0 %* 
    goto :eof 
    ::!# 

Estoy teniendo un problema googlear ::#!. ¿Qué significa esto? Sé :: denota un comentario y en Unix #! es una dirección para el shell que se utilizará, pero ¿qué es exactamente aquí? Y el ::!#?

¿Qué significa exactamente %0 %*, y es necesario expresarlo así?

¿Es posible ejecutar varias secuencias de comandos desde el mismo archivo por lotes?

Respuesta

15

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. :-)

2

% 0 indica el nombre del programa (el nombre del archivo de script es posible),% * indica la lista de parámetros de la línea de comando. % 1 significa el primer parámetro ...

+0

Se usan los mismos argumentos en este archivo por lotes de Javascript http://stackoverflow.com/questions/4999395/how-does-this-windows-batch-file-work –

Cuestiones relacionadas