【发布时间】:2011-05-25 20:49:12
【问题描述】:
我想将一些 Scala 脚本放入一个批处理文件中。如果你只是打印参数,规范的方式是这样的:
::#!
@echo off
scala %0 %*
goto :eof
::!#
args foreach println
(这实际上调用了另一个批处理脚本,Scala 的 bin 目录中的 scala.bat)。如果我尝试将包含括号的参数传递给它,Windows 命令行解释器会报错语法错误:
printargs.bat "foo(bar)baz"
奇怪的是,如果我创建一个仅包含 args foreach println 的 scala 文件 printargs.scala,则它可以正常工作:
scala printargs.scala "foo(bar)baz"
所以我认为这不是scala.bat 中的错误。但是我能做什么呢?
更新:实际错误发生在scala.bat中的以下行:
set _ARGS=%*
带有错误信息
baz was unexpected at this time
如果我将scala.bat 更改为不使用局部变量而是直接使用 %*,则它可以正常工作。所以我filed a bug-report。在修复错误之前,是否有解决此问题的方法仍然存在问题。
【问题讨论】:
-
你应该添加scala.bat的代码,这样我们才能看到问题
-
请发布错误信息。
-
D:\Download>printargs foo(bar)baz=>baz was unexpected at this time。当我引用“foo(bar)baz”时没有错误。如果来自 scala.bat 的消息,它是 Scala 的 bin/ 目录中的真实消息。它似乎与结束括号 ')' 字符有关。 -
Scala.bat:code.google.com/p/lighttexteditor/source/browse/trunk/… 设置@echo 并没有透露太多,因为 CLI(cmd.exe?)执行和解析似乎不同步。在文件中添加任何暂停等都会使其不稳定。
标签: windows shell scala command-line batch-file