2011-07-12 19 views
9

在Scala編程中,它介紹瞭如何從批處理文件運行Scala腳本(link)。Windows批處理文件中的Scala腳本

對於Windows

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

我在谷歌上搜索::#!問題。這是什麼意思?我知道::表示一個註釋,而在Unix中#!是一個shell的使用方向,但是它到底是什麼?而::!#

%0 %*究竟是什麼意思,是否有必要這樣表達?

是否可以從同一批處理文件運行多個腳本?

回答

15

這是一個噱頭,但它的工作原理。它打算複製Unix shell調用特定命令來處理shell文件的能力。所以,這裏的解釋:

::#! 

線開始::在Windows外殼程序的意見,所以這只是一個評論。

@echo off 

不顯示從這裏開始執行的行。開始時的@確保此行本身不會顯示。

call scala %0 %* 

將執行轉移到scala腳本。 %0表示該文件本身的名稱(以便scala可以找到它),並且%*是在其執行過程中傳遞的參數。

例如,假設這些行位於名爲count.bat的文件中,並且您通過鍵入count 1 2 3來調用它。在這種情況下,該行將執行scala count 1 2 3 - 在這種情況下,您將收到錯誤消息。您必須通過輸入count.bat來調用它。

goto :eof 

完成執行腳本。

::!# 

另一條評論欄。

所以,這裏的訣竅...斯卡拉,調用一次,會發現作爲第一個參數傳遞的文件,檢查第一行是::#!,不顧一切到行::!#如果是這樣,然後執行剩下的(::!#之後的行)作爲Scala腳本。

換句話說,它不是Windows智能外殼,它是Scala。 :-)

2

%0表示程序名(可能是腳本文件名),%*表示命令行參數列表。 %1表示第一個參數...

+0

在這個Javascript批處理文件中使用了相同的參數http://stackoverflow.com/questions/4999395/how-does-this-windows-batch-file-work –