【发布时间】:2018-11-13 13:00:47
【问题描述】:
我创建了一个 spring boot 项目,我在本地 tomcat 上运行(我打算将它部署到网络服务器)。在这个项目中,我创建了一个休息服务,它应该执行一个 .bat 文件。
我的休息服务看起来像这样(它们都不起作用)
@RequestMapping(value = "/esc", method= RequestMethod.GET)
public String esc() throws IOException, InterruptedException {
String folder = "P:\\Documents\\testcmd";
String[] cmdarray = new String[]{"cmd -c","dosomething.cmd"};
ProcessBuilder processBuilder = new ProcessBuilder( cmdarray );
processBuilder.directory(new File(folder));
Process process = processBuilder.start();
int exitCode = -1;
boolean finished = false;
while ( !finished ) {
exitCode = process.waitFor();
finished = true;
}
return folder;
}
@RequestMapping(value = "/ex", method= RequestMethod.GET)
public String executeShellScript(){
//final String shCmd = "/bin/bash -c helloworld.sh";
System.out.println("Working Directory = " +
System.getProperty("user.dir"));
final String shCmd = "cmd -c P:/Documents/testcmd/dosomething.cmd";
String output = executeCommand(shCmd);
return output;
}
private String executeCommand(String command){
Process p;
InputStream in = null;
String value = "";
try {
p = Runtime.getRuntime().exec(command);
in = p.getInputStream();
int ch;
while((ch = in.read()) != -1) {
value = String.valueOf((char)ch);
}
}catch (IOException e){
e.printStackTrace();
}
return value;
}
我使用流程构建器和运行时进行了尝试。 我要执行的文件在这个文件夹中:“P:\Documents\testcmd”
甚至可以用tomcat服务器执行本地文件吗?
【问题讨论】:
-
您是在 Windows 还是 Linux 上运行? (不清楚你调用 /bin/bash 和 cmd -c )
-
我在 windows 上运行这个
标签: java spring rest shell tomcat