我正在开发一个项目,它会给你一个Windows命令列表。当您选择一个时,它将执行该命令。但是,我不知道该怎么做。我打算用Visual C#或C ++来做,但是C ++类太复杂了,我不想在Visual C#中制作表单和垃圾(在控制台应用程序中非常糟糕)。
答案 0 :(得分:5)
一个例子。 1.创建cmd 2.写入cmd - >叫一个命令。
try {
// Execute command
String command = "cmd /c start cmd.exe";
Process child = Runtime.getRuntime().exec(command);
// Get output stream to write from it
OutputStream out = child.getOutputStream();
out.write("cd C:/ /r/n".getBytes());
out.flush();
out.write("dir /r/n".getBytes());
out.close();
} catch (IOException e) {
}
答案 1 :(得分:5)
利用ProcessBuilder
。
它使构建过程参数变得更容易,并且可以自动处理命令中的空格......
public class TestProcessBuilder {
public static void main(String[] args) {
try {
ProcessBuilder pb = new ProcessBuilder("cmd", "/c", "dir");
pb.redirectError();
Process p = pb.start();
InputStreamConsumer isc = new InputStreamConsumer(p.getInputStream());
isc.start();
int exitCode = p.waitFor();
isc.join();
System.out.println("Process terminated with " + exitCode);
} catch (IOException | InterruptedException exp) {
exp.printStackTrace();
}
}
public static class InputStreamConsumer extends Thread {
private InputStream is;
public InputStreamConsumer(InputStream is) {
this.is = is;
}
@Override
public void run() {
try {
int value = -1;
while ((value = is.read()) != -1) {
System.out.print((char)value);
}
} catch (IOException exp) {
exp.printStackTrace();
}
}
}
}
我通常会构建一个通用类,您可以通过“命令”(例如“dir”)及其参数传递,它会自动将调用附加到操作系统。如果命令允许输入,我还可以通过监听器回调接口甚至输入来获取输出的能力......
答案 2 :(得分:4)
我希望这会有所帮助:)
您可以使用:
Runtime.getRuntime().exec("ENTER COMMAND HERE");
答案 3 :(得分:1)
老问题但可能会帮助路过的人。这是一个简单而有效的解决方案。上述一些解决方案无法正常工作。
import java.io.IOException;
import java.io.InputStream;
public class ExecuteDOSCommand
{
public static void main(String[] args)
{
final String dosCommand = "cmd /c dir /s";
final String location = "C:\\WINDOWS\\system32";
try
{
final Process process = Runtime.getRuntime().exec(dosCommand + " " + location);
final InputStream in = process.getInputStream();
int ch;
while((ch = in.read()) != -1)
{
System.out.print((char)ch);
}
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
答案 4 :(得分:1)
这是在控制台窗口中运行和打印 ipconfig 命令输出的示例代码。
import java.io.IOException;
import java.io.InputStream;
public class ExecuteDOSCommand {
public static void main(String[] args) {
final String dosCommand = "ipconfig";
try {
final Process process = Runtime.getRuntime().exec(dosCommand );
final InputStream in = process.getInputStream();
int ch;
while((ch = in.read()) != -1) {
System.out.print((char)ch);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}