Ответ 1
Runtime.getRuntime().exec("netsh");
См. Runtime Javadoc.
EDIT: более поздний ответ leet предполагает, что этот процесс теперь устарел. Однако, по комментариям DJViking, это выглядит не так: Документация по Java 8. Этот метод не устарел.
В Java я хочу иметь возможность выполнить команду Windows.
Соответствующая команда netsh
. Это позволит мне установить /reset мой IP-адрес.
Обратите внимание, что я не хочу выполнять пакетный файл.
Вместо использования пакетного файла я хочу выполнить такие команды напрямую. Возможно ли это?
Вот мое внедренное решение для будущей ссылки:
public class JavaRunCommand {
private static final String CMD =
"netsh int ip set address name = \"Local Area Connection\" source = static addr = 192.168.222.3 mask = 255.255.255.0";
public static void main(String args[]) {
try {
// Run "netsh" Windows command
Process process = Runtime.getRuntime().exec(CMD);
// Get input streams
BufferedReader stdInput = new BufferedReader(new InputStreamReader(process.getInputStream()));
BufferedReader stdError = new BufferedReader(new InputStreamReader(process.getErrorStream()));
// Read command standard output
String s;
System.out.println("Standard output: ");
while ((s = stdInput.readLine()) != null) {
System.out.println(s);
}
// Read command errors
System.out.println("Standard error: ");
while ((s = stdError.readLine()) != null) {
System.out.println(s);
}
} catch (Exception e) {
e.printStackTrace(System.err);
}
}
}
Runtime.getRuntime().exec("netsh");
См. Runtime Javadoc.
EDIT: более поздний ответ leet предполагает, что этот процесс теперь устарел. Однако, по комментариям DJViking, это выглядит не так: Документация по Java 8. Этот метод не устарел.
Используйте ProcessBuilder
ProcessBuilder pb=new ProcessBuilder(command);
pb.redirectErrorStream(true);
Process process=pb.start();
BufferedReader inStreamReader = new BufferedReader(
new InputStreamReader(process.getInputStream()));
while(inStreamReader.readLine() != null){
//do something with commandline output.
}
public static void main(String[] args) {
String command="netstat";
try {
Process process = Runtime.getRuntime().exec(command);
System.out.println("the output stream is "+process.getOutputStream());
BufferedReader reader=new BufferedReader( new InputStreamReader(process.getInputStream()));
String s;
while ((s = reader.readLine()) != null){
System.out.println("The inout stream is " + s);
}
} catch (IOException e) {
e.printStackTrace();
}
}
Это работает.
Вы можете запустить команду с помощью Runtime.getRuntime().exec("tree");
. Но это будет запускать только исполняемые файлы, найденные в пути, а не такие команды, как echo
, del
,... Но только такие вещи, как tree.com
, netstat.com
,... Для запуска регулярных команд вам придется cmd /c
перед командой (eaxmple: Runtime.getRuntime().exec("cmd /c echo echo");