Windows批处理文件中的Scala脚本

Lui*_*hys 9 windows scripting scala batch-file

在Scala中的Programming中,它描述了如何从批处理文件(链接)运行Scala脚本.

对于Windows

  ::#!
  @echo off
  call scala %0 %*
  goto :eof
  ::!#
Run Code Online (Sandbox Code Playgroud)

我有一个问题谷歌搜索::#!.这是什么意思?我知道::表示一个注释,在Unix中#!是shell的使用方向,但这究竟是什么?而且::!#

究竟是什么%0 %*意思,是否有必要像这样表达?

是否可以从同一批处理文件中运行多个脚本?

Dan*_*ral 15

这是一个噱头,但它的工作原理.它打算复制Unix shell调用特定命令来处理shell文件的能力.所以,这是解释:

::#!
Run Code Online (Sandbox Code Playgroud)

开头的行::是Windows shell中的注释,所以这只是一个注释.

@echo off
Run Code Online (Sandbox Code Playgroud)

不要显示从这里开始执行的行.在@一开始确保这条线本身将不会显示.

call scala %0 %*
Run Code Online (Sandbox Code Playgroud)

将执行转移到scala脚本.这%0意味着该文件本身的名称(以便scala可以找到它),并且%*是在其执行中传递的参数.

例如,假设这些行位于一个名为的文件中count.bat,您可以通过键入来调用它count 1 2 3.在这种情况下,该行将执行scala count 1 2 3- 在这种情况下,您将收到错误.您必须通过键入来调用它count.bat.

goto :eof
Run Code Online (Sandbox Code Playgroud)

完成执行脚本.

::!#
Run Code Online (Sandbox Code Playgroud)

另一条评论线.

所以,这里的诀窍...... Scala,一旦被调用,将发现文件作为第一个参数传递,检查第一行是否::#!,如果是,则忽略所有行::!#,然后执行文件的其余部分(行之后::!#)作为Scala脚本.

换句话说,它不是智能的Windows外壳,而是Scala.:-)