Java 运行Jenkins提供的.bat文件

Java 运行Jenkins提供的.bat文件,java,batch-file,tomcat,jenkins,Java,Batch File,Tomcat,Jenkins,我正在尝试使用运行该文件 当我运行时,出现错误: FailedConsole Output Started by user anonymous [EnvInject] - Loading node environment variables. Building in workspace C:\Users\*****\.hudson\jobs\dfs\workspace [workspace] $ cmd /c call C:\apache-tomcat-7.0.63\temp\hudson58

我正在尝试使用运行该文件

当我运行时,出现错误:

FailedConsole Output

Started by user anonymous
[EnvInject] - Loading node environment variables.
Building in workspace C:\Users\*****\.hudson\jobs\dfs\workspace
[workspace] $ cmd /c call C:\apache-tomcat-7.0.63\temp\hudson5830491027958954227.bat

C:\Users\*****\.hudson\jobs\dfs\workspace>call "C:\apache-tomcat-7.0.63-jenkins\bin\startup.bat" 
Files\Java\jdk1.7.0_71\bin\java.exe"" was unexpected at this time.
Build step 'Execute managed windows batch' marked build as failure
Finished: FAILURE
同样的错误是,当我从Jenkins调用java类时。在java类中:

Runtime.getRuntime().exec("cmd /c start C:\\apache-tomcat-7.0.63-jenkins\\bin\\startup.bat");
有什么想法吗? 我只想启动/停止您正在运行的tomcat

cmd /c call C:\apache-tomcat-7.0.63\temp\hudson5830491027958954227.bat

“调用”在命令窗口中仅在批处理文件中没有意义。尝试跳过命令行中的“调用”。

首先,我认为使用Jenkins执行批处理/shell脚本的最佳方法是使用它们的插件


关于您的情况,您正在使用的插件会打开一个cmd来执行批处理脚本,因此您不需要指定如何打开它,
C:\apache-tomcat-7.0.63-jenkins\bin\startup.bat
就足够了。在java示例中,不要使用start。

相同的情况:
由用户匿名启动[EnvInject]-加载节点环境变量。在工作区C:\Users\***\.hudson\jobs\dfs\workspace[workspace]$cmd/C调用C:\apache-tomcat-7.0.63\temp\hudson6306847186713865408.bat C:\Users\***\.hudson\jobs\dfs\workspace>“C:\apache-tomcat-7.0.63-jenkins\bin\startup.bat”Files\Java\jdk1.7.0\u 71\bin\Java.exe此时出乎意料。生成步骤“执行托管windows批处理”将生成标记为失败已完成:失败
是,我在jenkins中使用默认插件进行了尝试-结果相同。如果此插件打开“cmd”,为什么不使用此
C:\apache-tomcat-7.0.63-jenkins\bin\startup.bat
?现在我通过cmd运行它,但是有一个错误:
CATALINA_HOME环境变量没有正确定义。如果我设置CATALINA_HOME,那么运行这个程序需要这个环境变量
,当我启动tomcat6而不是tomcat7时,每个tomcat都以CATALINA_HOME中的路径启动,所以这就是jenkins cmd的问题(或者任何在这个意义上的cmd)都从它自己的上下文开始,该上下文将变量存储为CATALINA_HOME。如果在脚本的开头设置CATALINA_HOME,它在cmd退出后将不会出现。