我找到了几个通过Java类运行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
如何使用Java打开命令提示符并插入命令?
有人能帮我了解如何cd目录,例如:
cd C:\Program Files\Flowella
然后在该目录上运行其他命令?
如果要执行像cd
这样的操作,请使用:
String[] command = {command_to_be_executed, arg1, arg2};
ProcessBuilder builder = new ProcessBuilder(command);
builder = builder.directory(new File("directory_location"));
例子:
String[] command = {"ls", "-al"};
ProcessBuilder builder = new ProcessBuilder(command);
builder = builder.directory(new File("/ngs/app/abc"));
Process p = builder.start();
在字符串数组的不同字符串中拆分命令和所有参数非常重要(否则,ProcessBuilder
API将无法正确提供它们)。
你可以试试这个:-
Process p = Runtime.getRuntime().exec(command);
从不同目录运行进程到Java程序工作目录的一种方法是更改目录,然后在同一命令行中运行进程。您可以通过获取cmd来实现这一点。exe
来运行命令行,比如cd some_directory
下面的示例更改为另一个目录,并从那里运行
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类运行cmd命令的代码段,但我无法理解。 这是打开cmd的代码 我找到了一些其他链接来添加其他命令,例如cd http://www.coderanch.com/t/109753/Linux-UNIX/exec-command-cd-command-java 如何使用Java打开命令提示符并插入命令? 谁能帮助我了解如何CD目录,例如: 然后在该目录上运行其他
我正在尝试使用ProcessBuild运行cmd语句。 但是,我只能打开cmd。exe 那么如何编写此语句通过java运行cmd命令??我得到了错误,因为语句由"*"组成。如何编辑ProcessBuilder以便我可以运行语句?非常感谢
问题内容: 我正在尝试通过Java执行命令行参数。例如: 上面的命令打开命令行,但是不执行或。有任何想法吗?我正在运行Windows XP,JRE6。 (我已经对问题进行了更详细的修订。以下答案很有用,但不能回答我的问题。) 问题答案: 你发布的代码使用自己的命令启动三个不同的过程。要打开命令提示符然后运行命令,请尝试以下操作(请勿自己尝试):
我正在使用DB2 V10.5(windows),试图尝试使用Liquibase。 我正在使用liquibase-3.5.3-bin。我用以下参数设置了liquibase.properties文件。 我无法设置类路径使用多个罐。所以当我奔跑时 我得到了丢失snakeyaml jar的错误 我为类路径尝试的选项: 但不知何故,它不起作用。 当我运行Liquibase时,有人能建议我如何设置类路径,以便
我想一个接一个地从java代码中成功地运行多个cmd命令。 我想使用这个创建ssh连接的命令行应用程序,我想像在正常的命令提示符窗口中一样连续运行多个命令,而不需要实际关闭会话。我在java中找到的关于运行cmd命令的大多数答案都谈到了运行单个命令然后停止。就像这个问题的答案: 通过java运行cmd命令 我需要将命令的输出重定向到控制台,并从控制台获取新命令作为输入。有点像用java代码模拟cm
一些注意事项: 1。我最初使用的TestNG jar来自java项目中的maven repo。下面的所有方法都是用maven testNG jar和新的TestNG6.9.12下载进行测试的。 2。我可以从Eclipse中运行这个文件。只有当我尝试从命令行运行时才有问题。 3。最终目标是通过javafx应用程序按钮触发命令行来运行测试。如果提供的解决方案避免在cmd中键入绝对路径,因为应用程序将在