为什么ArrayList.execute()不会使用给定的参数?

时间:2015-07-17 16:01:21

标签: arraylist groovy

我正在尝试使用groovy在Windows上运行批处理脚本。我从这段代码开始:

StringBuilder output = new StringBuilder()
StringBuilder error = new StringBuilder()
dir = new File("$homedir")
Process proc = "pathToScript\script.bat --arg test".execute(null, dir)
proc.consumeProcessOutput(output, error)
proc.waitFor()
print proc.exitValue()

这段代码适用于我的脚本,但是有些命令不能很好用,所以我决定开始使用ArrayList来存储参数。所以现在我的代码看起来像这样:

StringBuilder output = new StringBuilder()
StringBuilder error = new StringBuilder()
dir = new File("$homedir")
ArrayList command = ["pathToScript\script.bat", "--arg test"]
Process proc = command.execute(null, dir)
proc.consumeProcessOutput(output, error)
proc.waitFor()
print proc.exitValue()

现在出于某种莫名其妙的原因,它运行script.bat而没有参数。我打印出列表以确保它包含正确的参数,它确实如此,所以我不确定为什么execute方法没有使用它们。

1 个答案:

答案 0 :(得分:4)

尝试:

ArrayList command = ["pathToScript\script.bat", "--arg", "test"]

List的实例用作execute()的来源时,所有参数都应单独传递。