gpt4 book ai didi

java - 通过 Java 运行 cmd 命令

转载 作者:IT老高 更新时间:2023-10-28 20:34:00 26 4
gpt4 key购买 nike

我找到了几个通过 Java 类运行 cmd 命令的代码片段,但我无法理解。

这是打开cmd的代码

public void excCommand(String new_dir){
Runtime rt = Runtime.getRuntime();
try {
rt.exec(new String[]{"cmd.exe","/c","start"});

} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

我还找到了一些其他链接,用于添加其他命令,例如 cd http://www.coderanch.com/t/109753/Linux-UNIX/exec-command-cd-command-java

How to open the command prompt and insert commands using Java?

谁能帮我理解如何 cd 一个目录,例如:

 cd C:\Program Files\Flowella

然后在该目录上运行其他命令?

最佳答案

将进程从不同目录运行到 Java 程序的工作目录的一种方法是更改​​目录,然后在同一命令行中运行该进程。您可以通过让 cmd.exe 运行诸如 cd some_directory && some_program 之类的命令行来做到这一点。

以下示例更改为不同的目录并从那里运行 dir。诚然,我可以只 dir 那个目录而不需要 cd 到它,但这只是一个例子:

import java.io.*;

public class CmdTest {
public static void main(String[] args) throws Exception {
ProcessBuilder builder = new ProcessBuilder(
"cmd.exe", "/c", "cd \"C:\\Program Files\\Microsoft SQL Server\" && dir");
builder.redirectErrorStream(true);
Process p = builder.start();
BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while (true) {
line = r.readLine();
if (line == null) { break; }
System.out.println(line);
}
}
}

还要注意,我正在使用 ProcessBuilder 来运行命令。除此之外,这允许我通过调用 redirectErrorStream(true) 将进程的标准错误重定向到其标准输出。这样做只会让我读取一个流。

这在我的机器上给了我以下输出:

C:\Users\Luke\StackOverflow>java CmdTest
Volume in drive C is Windows7
Volume Serial Number is D8F0-C934

Directory of C:\Program Files\Microsoft SQL Server

29/07/2011 11:03 <DIR> .
29/07/2011 11:03 <DIR> ..
21/01/2011 20:37 <DIR> 100
21/01/2011 20:35 <DIR> 80
21/01/2011 20:35 <DIR> 90
21/01/2011 20:39 <DIR> MSSQL10_50.SQLEXPRESS
0 File(s) 0 bytes
6 Dir(s) 209,496,424,448 bytes free

关于java - 通过 Java 运行 cmd 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15464111/

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