如何从java应用程序运行windows命令promt?
目前,我正在尝试用GUI制作应用程序。此应用程序必须使用一些命令运行cmd。我正试着去做。我想实现操作(当我按下按钮“搜索”-命令promt打开时)。我尝试使用ProcessBuilder实现目标,但没有结果。正如您在下面看到的,我尝试使用“dir”命令运行cmd。我试着不运行一些命令,但CMD没有运行。因此,我们在任务管理器中看不到窗口和进程。 这是我的代码:如何从java应用程序运行windows命令promt?,java,user-interface,cmd,swig,processbuilder,Java,User Interface,Cmd,Swig,Processbuilder,目前,我正在尝试用GUI制作应用程序。此应用程序必须使用一些命令运行cmd。我正试着去做。我想实现操作(当我按下按钮“搜索”-命令promt打开时)。我尝试使用ProcessBuilder实现目标,但没有结果。正如您在下面看到的,我尝试使用“dir”命令运行cmd。我试着不运行一些命令,但CMD没有运行。因此,我们在任务管理器中看不到窗口和进程。 这是我的代码: package sys.tool; import java.awt.*; import java.awt.event.*;
package sys.tool;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
//Создаем поля
public class MainWindow extends JFrame{
private JLabel lcn = new JLabel("Enter computer name:");
private JTextField icn = new JTextField("", 5);
private JButton search = new JButton("Search");
private JLabel lun = new JLabel("Enter user name:");
private JTextField iun = new JTextField("", 5);
private JLabel empty = new JLabel("");
public MainWindow (){
super("SysAdminTool");
this.setBounds(100, 100, 700 , 90);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setResizable(false);
Container container = this.getContentPane();
container.setLayout(new GridLayout(3, 2 , 1, 1));
container.add(lcn);
container.add(icn);
container.add(lun);
container.add(iun);
container.add(empty);
search.addActionListener(new SearchEventListener());
container.add(search); //this is button
}
class SearchEventListener implements ActionListener{
public void actionPerformed (ActionEvent e){
ProcessBuilder pb = new ProcessBuilder("cmd.exe", "/C", "dir C:\\Users"); \\here I try to run cmd with command "dir"
}
}
}
在操作系统上运行命令
String command = "command of the operating system";
Process process = Runtime.getRuntime().exec(command);
在操作系统上运行命令
String command = "command of the operating system";
Process process = Runtime.getRuntime().exec(command);
此代码将dir命令的结果输出到控制台:
导入java.io.BufferedReader;
导入java.io.InputStreamReader;
公营班长{
私有静态最终字符串CHAR\u SET\u NAME\u WINDOWS=“WINDOWS-1251”;
私有静态最终字符串CHAR\u SET\u UTF=“utf8”;
私有静态最终字符串CHAR\u SET\u CP=“cp866”;
私有静态最终字符串命令=“cmd.exe/c dir”;
公共静态void main(字符串[]args){
runCommand(命令、字符集、名称、窗口);
}
私有静态void runCommand(String命令,String charsetName){
试一试{
Process Process=Runtime.getRuntime().exec(命令);
//获取输入流
BufferedReader stdInput=新的BufferedReader(新的InputStreamReader(process.getInputStream(),charsetName));
BufferedReader stdError=新的BufferedReader(新的InputStreamReader(process.getErrorStream(),charsetName));
//读取命令标准输出
字符串s;
System.out.println(“标准输出:”);
而((s=stdInput.readLine())!=null){
系统输出打印项次;
}
//读取命令错误
System.out.println(“标准错误:”);
而((s=stdError.readLine())!=null){
系统输出打印项次;
}
}捕获(例外e){
e、 printStackTrace(System.err);
}
}
}
我希望这会有所帮助。此代码将dir命令的结果输出到控制台:
导入java.io.BufferedReader;
导入java.io.InputStreamReader;
公营班长{
私有静态最终字符串CHAR\u SET\u NAME\u WINDOWS=“WINDOWS-1251”;
私有静态最终字符串CHAR\u SET\u UTF=“utf8”;
私有静态最终字符串CHAR\u SET\u CP=“cp866”;
私有静态最终字符串命令=“cmd.exe/c dir”;
公共静态void main(字符串[]args){
runCommand(命令、字符集、名称、窗口);
}
私有静态void runCommand(String命令,String charsetName){
试一试{
Process Process=Runtime.getRuntime().exec(命令);
//获取输入流
BufferedReader stdInput=新的BufferedReader(新的InputStreamReader(process.getInputStream(),charsetName));
BufferedReader stdError=新的BufferedReader(新的InputStreamReader(process.getErrorStream(),charsetName));
//读取命令标准输出
字符串s;
System.out.println(“标准输出:”);
而((s=stdInput.readLine())!=null){
系统输出打印项次;
}
//读取命令错误
System.out.println(“标准错误:”);
而((s=stdError.readLine())!=null){
系统输出打印项次;
}
}捕获(例外e){
e、 printStackTrace(System.err);
}
}
}
我希望这会有所帮助。我之前做过,但当我尝试构建项目时,command exec突出显示红色,出现了此错误:“错误:(38,55)java:unreported exception java.io.IOException;必须捕获或声明要抛出”。我将此代码放在SearchEventListener类中:
class SearchEventListener实现ActionListener{public void actionPerformed(ActionEvent e){String command=“cmd.exe”;Process Process=Runtime.getRuntime().exec(command)
“错误:(38,55)java:unreported exception java.io.IOException;必须捕获或声明为抛出”。我将此代码放在类SearchEventListener:class SearchEventListener实现ActionListener{public void actionPerformed(ActionEvent e){String command=“cmd.exe”;进程=Runtime.getRuntime().exec(command)