使用groovy脚本在windows上执行exe

使用groovy脚本在windows上执行exe,groovy,cmd,Groovy,Cmd,我正在尝试从Groovy控制台执行MIR3(通知系统)exe: def proc = "cmd /c C:\\Users\\AAithal\\Desktop\\MIR3\bin\\inConsole -H \"company.mir3.com\" -u \"user\" -p \"password\" -I -i \"Server\"".execute(); proc.waitForProcessOutput(System.out, System.err); println "proc" 但是

我正在尝试从Groovy控制台执行MIR3(通知系统)exe:

def proc = "cmd /c C:\\Users\\AAithal\\Desktop\\MIR3\bin\\inConsole -H \"company.mir3.com\" -u \"user\" -p \"password\" -I -i \"Server\"".execute();
proc.waitForProcessOutput(System.out, System.err);
println "proc"
但是得到一个错误:

文件名、目录名或卷标语法不正确

脚本中的路径是正确的,我能够从Windows CLI执行相同的路径并获得所需的输出


请告诉我哪里出了问题。

当您有大量的参数时,有时最好使用ProcessBuilder,例如

def sout = new StringBuilder(), serr = new StringBuilder()
//def args = ['cmd', '/c', 'dir']
def args = ['cmd', '/c', 'C:\\Users\\AAithal\\Desktop\\MIR3\\bin\\inConsole', '-H', 'company.mir3.com', '-u', 'user', '-p', 'password', '-I', '-i', 'Server']
def proc = new ProcessBuilder( args )
Process process = proc.start()
process.consumeProcessOutput( sout, serr )
process.waitForOrKill( 2000 )
println sout

我已经加入了注释掉的
def args=['cmd','/c',dir']
行,这样你就可以用一个简单的例子测试一切是否正常,然后转到更复杂的调用。

谢谢迈克,这很好:)


请将您的代码/输出作为文本而不是图像。@doelleri,这里是:-def proc=“cmd/c:\\Users\\AAithal\\Desktop\\MIR3\bin\\incole-H\”company.MIR3.com\”-u\“user\”-p\“password\”-I-I\“Server\”.execute();进程waitForProcessOutput(System.out,System.err);println“proc”谢谢你的代码,它工作得很好。我试图替换其中一个命令开关中的变量,如下所示:字符串MIR3Name='Server'//println“$MIR3Name”def args=['cmd','/c','c:\\Users\\AAithal\\Desktop\\MIR3\\bin\\incole','-H','company.MIR3.com','-u',user','-p',password'-I','MIR3Name']上面定义的变量值在命令中未被替换。我使用了单引号/双引号、花括号等。请让我知道正确的语法,因为我也尝试了-只需将MIR3Name放入数组中就可以了
def args = ['cmd', '/c', 'E:\\MIR3\\bin\\inConsole', '-H', 'company.mir3.com', '-u', 'user', '-p', 'password', '-I', '-i', MIR3Name, '-X', msgdata]