【问题标题】:Scala scripts in Windows batch filesWindows 批处理文件中的 Scala 脚本
【发布时间】:2011-10-04 01:19:24
【问题描述】:

在 Programming in Scala 中,它描述了如何从批处理文件 (link) 运行 Scala 脚本。

对于 Windows

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

我在搜索 ::#! 时遇到问题。这是什么意思?我知道:: 表示注释,在Unix 中#! 是要使用的shell 的方向,但这里到底是什么?还有::!#?

%0 %*到底是什么意思,有必要这样表达吗?

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

【问题讨论】:

    标签: windows scala scripting batch-file


    【解决方案1】:

    这是一个噱头,但它确实有效。它旨在复制 Unix shell 调用特定命令来处理 shell 文件的能力。所以,这里是解释:

    ::#!
    

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

    @echo off
    

    不要显示从这里开始执行的行。开头的@ 确保不会显示此行本身。

    call scala %0 %*
    

    将执行转移到scala 脚本。 %0 表示此文件本身的名称(以便 scala 可以找到它),%* 是在其执行过程中传递的参数。

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

    goto :eof
    

    完成脚本的执行。

    ::!#
    

    另一个注释行。

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

    换句话说,智能的不是 Windows shell,而是 Scala。 :-)

    【讨论】:

      【解决方案2】:

      %0 表示程序名(可能是脚本文件名),%* 表示命令行参数列表。 %1 表示第一个参数...

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-16
      • 1970-01-01
      • 1970-01-01
      • 2013-04-20
      • 1970-01-01
      相关资源
      最近更新 更多