Scala не позволяет мне выполнять командный файл, путь которого содержит пробелы. То же самое делает и код Java. Что дает? - PullRequest
3 голосов
/ 13 марта 2010

Вот код, который у меня есть:

var commandsBuffer = List[String]()
commandsBuffer ::= "cmd.exe"
commandsBuffer ::= "/c"
commandsBuffer ::= '"'+vcVarsAll.getAbsolutePath+'"'
commandsBuffer ::= "&&"
otherCommands.foreach(c => commandsBuffer ::= c)
val asArray = commandsBuffer.reverse.toArray
val processOutput = processutils.Proc.executeCommand(asArray,true)
return processOutput

otherCommands - это Array[String], содержащий следующие элементы:

  • vcbuild

  • /rebuild

  • путь к файлу .sln

vcVarsAll содержит путь к vcvarsall.bat Visual Studio. Это путь C:\tools\microsoft visual studio 2005\vc\vcvarsall.bat. Я получаю ошибку: 'c:\Tools\Microsoft' is not recognized as an internal or external command, operable program or batch file..

processutils.Proc.executeCommand имеет следующую реализацию:

def executeCommand(params:Array[String],display:Boolean):(String,String) = {
  val process = java.lang.Runtime.getRuntime.exec(params) 
  val outStream = process.getInputStream
  val errStream = process.getErrorStream
  ...
}

Тот же код, выполненный из Java / Groovy работает. Что я делаю не так?

1 Ответ

0 голосов
/ 13 марта 2010

Хорошо, поэтому я попробовал все комбинации, которые мог придумать. В итоге получилось исключить cmd.exe /c из комбо.

...