使用Java,在同一cmd.exe窗口中运行多个命令

使用Java,在同一cmd.exe窗口中运行多个命令,java,windows,cmd,runtime,Java,Windows,Cmd,Runtime,我正在开发一个Java应用程序,它偶尔会在Windows计算机上运行。 在某些时候,我需要运行Cygwin提示符并在其中执行一些命令 我发现了一个使用Runtime类的主题: 然而,它并没有启动真正的cmd.exe窗口,它只是在后台运行,输出结果只是打印在Eclipse控制台上 我正在寻找一个解决方案来运行一个真正的cmd.exe窗口,我需要向该windows shell传递尽可能多的命令。 这可能吗?不太确定,但如果我正确理解您的问题,请尝试:对于java Coniffiguration面板

我正在开发一个Java应用程序,它偶尔会在Windows计算机上运行。 在某些时候,我需要运行Cygwin提示符并在其中执行一些命令

我发现了一个使用Runtime类的主题:

然而,它并没有启动真正的cmd.exe窗口,它只是在后台运行,输出结果只是打印在Eclipse控制台上

我正在寻找一个解决方案来运行一个真正的cmd.exe窗口,我需要向该windows shell传递尽可能多的命令。
这可能吗?

不太确定,但如果我正确理解您的问题,请尝试:对于java Coniffiguration面板上的windows,应该取消选中show console按钮。

如果您不需要在屏幕上显示控制台,这很容易。您有一些简单的步骤要遵循:

  • 通过'processcmd=newprocessbuilder(“cmd.exe”).start()启动一个
    进程
  • 将命令发送到
    cmd.getOutputStream()
  • cmd.getInputStream()
    和/或
    cmd.getErrorStream()
  • 完成后,关闭
    cmd.getOutputStream()
    ,必要时通过
    cmd.destroy()
Optionnaly,您可以合并输出和错误流:

Process cmd = new ProcessBuilder("cmd.exe").redirectErrorStream(true).start();

然后您只需忽略
cmd.getErrorStream()
,而只从
cmd.getInputStream()

中读取此文件即可。。。使用&&operator,可以在同一命令提示符下添加一个或多个要执行的命令

try {
    Process p = Runtime
                    .getRuntime()
                    .exec("cmd /c start cmd.exe /K \"dir && ping localhost && echo end\"");
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } 
考虑一下这个解决方案

提问者更新:在cygwin中执行命令的解决方案

getRuntime().exec("cmd /c start C:/cygwin64/bin/bash.exe --login -c \"ls ; whoami ; exec bash\"");

这可能对你有帮助。。所以你需要一个命令行?可能是重复的问题,但该主题中给出的解决方案不适用于meThis可能是一个注释我没有找到你提到的复选框,但我认为这与我的问题无关,因为我不想看到Eclipse控制台,但实际的Windows cmd promptnot在Eclipse配置中。实际上,正如前面提到的,我需要显示控制台,但感谢它在将来会很有用。您的解决方案非常适合windows命令。谢谢!但是,当我运行以下命令时:.exec(“cmd/c start cmd.exe/K\”c:/cygwin64/bin/bash.exe&&ls\”;它在cmd.exe内执行cygwin终端,但在cygwin终端内不执行ls命令?这是为什么?它打开一个cmd.exe窗口,然后显示“/usr/bin/bash:/K没有这样的文件或目录”,并在我找到解决方案后立即关闭它,这要感谢您的部分代码和bash手册:.getRuntime().exec(“cmd/c start c:/cygwin64/bin/bash.exe--login-c\“ls;whoami;exec bash\”;谢谢你能用那行代码编辑你的帖子吗?