gpt4 book ai didi

Java切换目录,然后使用参数触发命令

转载 作者:行者123 更新时间:2023-12-02 09:40:05 25 4
gpt4 key购买 nike

嘿,我正在尝试更改目录,然后使用参数运行我的命令。

final String path = "\\Local// Apps\\IBM\\SDP\\scmtools\\eclipse";
final String command = "scm help";
final String dosCommand = "cmd /c \"" + path + "\"" + command;
final Process process = Runtime.getRuntime().exec(dosCommand);
final InputStream in = process.getInputStream();
int ch;

while((ch = in.read()) != -1) {
System.out.print((char)ch);
}

它运行时没有错误,但没有输出任何内容。然而,这是完成后显示的内容:

<terminated, exit value: 0>C:\Local Apps\IBM\SDP\jdk\bin\javaw.exe (Jul 22, 2019, 11:21:37 AM)

预期输出应该是:

enter image description here

那么我这样做正确吗?

按照安德烈亚斯的建议

Process p = null;
ProcessBuilder pb = new ProcessBuilder("scm.exe");
pb.directory(new File("C:/Local Apps/IBM/SDP/scmtools/eclipse"));
p = pb.start();

我收到以下错误:

Cannot run program "scm.exe" (in directory "C:\Local Apps\IBM\SDP\scmtools\eclipse"): CreateProcess error=2, The system cannot find the file specified

最佳答案

您应该使用ProcessBuilder而不是 Runtime.exec,例如

Process proc = new ProcessBuilder("scm.exe", "help")
.directory(new File("C:\\Local Apps\\IBM\\SDP\\scmtools\\eclipse"))
.inheritIO()
.start();
proc.waitFor(); // optional

如果需要,您还可以通过命令解释器,例如如果命令是脚本(.bat 或 .cmd 文件):

Process proc = new ProcessBuilder("cmd", "/c", "scm", "help")
.directory(new File("C:\\Local Apps\\IBM\\SDP\\scmtools\\eclipse"))
.inheritIO()
.start();
proc.waitFor();

inheritIO()意味着您不需要处理命令输出。它将被发送到控制台,或者 Java 自己的输出所在的任何地方。

关于Java切换目录,然后使用参数触发命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57149166/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com