我发现了几个通过 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();
}
}
我发现了一些其他链接用于添加其他命令,例如 cdhttp://www.coderanch.com/t/109753/Linux-UNIX/exec-command-cd-command-java http://www.coderanch.com/t/109753/Linux-UNIX/exec-command-cd-command-java
如何使用 Java 打开命令提示符并插入命令? https://stackoverflow.com/questions/4688123/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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)