Ответ 1
Это трюк, но он работает. Он намеревается реплицировать способность оболочки Unix вызывать определенную команду для обработки файла оболочки. Итак, здесь объяснение:
::#!
Строки, начинающиеся с ::
, являются комментариями в оболочке Windows, поэтому это всего лишь комментарий.
@echo off
Не показывать строки, выполненные здесь. @
в начале убедитесь, что эта строка не будет показана.
call scala %0 %*
Перенести выполнение на scala
script. %0
означает имя этого файла (так что scala может его найти), а %*
- это параметры, которые были переданы при его выполнении.
Например, скажем, что эти строки находятся в файле с именем count.bat
, и вы вызывали его, набрав count 1 2 3
. В этом случае эта строка выполнит scala count 1 2 3
- в этом случае вы получите сообщение об ошибке. Вы должны вызвать его, набрав count.bat
.
goto :eof
Завершите выполнение script.
::!#
Другая строка комментария.
Итак, вот трюк... Scala, после вызова, найдет файл, переданный как первый аргумент, проверьте, что первая строка ::#!
, игнорирует все до строки ::!#
, если это так, а затем выполнить оставшуюся часть файла (строки после ::!#
) как scala script.
Другими словами, это не оболочка Windows, а умная, она Scala.: -)