嗨,我需要在 java 中执行多个相互依赖的 cmd 命令:
cd "C:\Program Files (x86)\puTTY"
pscp -pw pwd F:\Test\file_to_send.txt login@my_ip:/home/bin
我尝试过这样的方法:
1)
Runtime.getRuntime().exec("cmd/c start F:\\Test\\move_to_linux.bat");
并在bat文件中设置:
cd "C:\Program Files (x86)\puTTY"
pscp -pw pwd F:\Test\file_to_send.txt login@my_ip:/home/bin
2)
try {
String[] command = new String[3];
command[0] = "cmd";
command[1] = "/c";
command[2] = "cd \"C:\\Program Files (x86)\\puTTY\" && pscp -pw pwd F:\\Test\\file_to_send.txt login@my_ip:/home/bin";
Process p = Runtime.getRuntime().exec(command);
BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = reader.readLine();
while (line != null) {
System.out.println(line);
line = reader.readLine();
}
BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));
BufferedReader stdError = new BufferedReader(new InputStreamReader(p.getErrorStream()));
String Error;
while ((Error = stdError.readLine()) != null) {
System.out.println(Error);
}
while ((Error = stdInput.readLine()) != null) {
System.out.println(Error);
}
} catch (Exception e) {
e.printStackTrace();
}
}
1) cmd 在 F:\Test 文件夹中打开,并且命令分别从 F:\Test 运行。 2) 'pscp' 不被识别为内部或外部命令,
最佳答案
This是如何运行 shell 命令的一个很好的例子。您不需要打开 putty 来运行系统命令。
您可以使用 native java 库来执行 shell 命令,但要注意这些命令是特定于操作系统的。我之前在一个项目中做过这样的事情,我们必须在 java 中模拟 shell,一旦你知道自己在做什么,这就很容易了。
我建议稍微模块化您的代码。例如
- 读取用户输入
- 解析用户输入
- 返回错误或执行命令
关于java - 如何在java中运行依赖的cmd命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23872317/