【问题标题】:How to run a command in cmd, and open it up to allow input? (Java)如何在cmd中运行命令,并打开它以允许输入? (爪哇)
【发布时间】:2016-06-12 21:50:36
【问题描述】:

我正在制作一个 Swing 程序,该程序将用于使用 G++ 轻松运行 C++ 程序,但我一直坚持实际运行该程序。我尝试使用 Runtime.getRuntime() 或类似的东西,但它似乎没有用。而且,使用它只运行命令,并且不允许输入。显然,由于它将运行一个程序,它需要能够接收命令行输入,所以有没有办法通过打开 cmd 然后在该程序实例中执行命令来运行命令,允许用户输入内容?

【问题讨论】:

    标签: java input cmd command


    【解决方案1】:

    看看 ProcessBuilder 类,我认为它可以满足您的要求:https://docs.oracle.com/javase/7/docs/api/java/lang/ProcessBuilder.html

    【讨论】:

    • 我不太明白,你能举个例子吗?
    【解决方案2】:

    如何在cmd中运行命令,并打开它允许输入? (Java)

    首先,你是否在使用 main 方法中的参数?

    public static void main(String[] args) //<--- arguments will be send to args[x]
    {
    
    }
    

    如果你希望你的程序能够接收参数,你必须处理那些接收到的参数,如果没有,即使参数被传入。什么都不会发生。

    示例:

    class MyFullName{
        public static void main(String[] args){
            if(args.length() != 2)
                system.out.println("2 arguments needed");
            else
                System.out.println("Your fullname is: " + args[0] + " " args[1]);
        }
    }
    

    上面的例子是一个程序,它接收名字和姓氏并将它们组合在一起并打印出来。您输入的参数将被传递到 args 字符串数组中。

    测试运行:

    javac MyFullName.java
    java MyFullName adam smith
    Your fullname is adam smith
    

    如果您使用的是 Windows 并且不想在命令提示符下键入命令,您可以将这些代码放在批处理文件中。执行批处理文件将执行这些命令,这将启动您的程序。

    【讨论】:

    • 如何从 java 运行批处理文件?我只需要使用Runtime.getRuntime().exec(batch file path)吗?
    • @ZacGarby 如果您使用的是批处理文件,我认为您不再需要使用 Runtime.getRuntime。只需直接到存储类文件的位置并运行它。例如:cd c:/windows/user/folderName。然后java class name.
    • 我不确定这如何回答这个问题,但我可能会误解它,但我需要的是一种运行一些命令/批处理文件的方法,并通过这样做,打开 cmd 到允许来自 C++ 程序的输入和输出。
    【解决方案3】:

    此示例 Java 程序执行 'dir' 命令读取 dir 命令的输出并打印结果。

    import java.io.*; 
    
    public class doscmd 
    { 
    public static void main(String args[]) 
    { 
    try 
    { 
    Process p=Runtime.getRuntime().exec("cmd /c dir"); 
    p.waitFor(); 
    BufferedReader reader=new BufferedReader(new    InputStreamReader(p.getInputStream())); 
    String line=reader.readLine(); 
    while(line!=null) 
    { 
    System.out.println(line); 
    line=reader.readLine(); 
    }} 
    catch(IOException e1) {} 
    catch(InterruptedException e2) {} 
    
    System.out.println("Done"); 
    }} 
    

    参考:http://www.javasamples.com/showtutorial.php?tutorialid=8

    【讨论】:

    • 问题在于,因为我正在制作一个运行 C++ 文件的程序,所以您需要能够进行输入 (cin >>),这意味着我不只是想打印出来。我认为允许输入的最简单方法是在 cmd 中运行它。
    猜你喜欢
    • 2012-05-21
    • 2016-01-29
    • 2013-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多