【问题标题】:How to run CMD in Java [closed]如何在 Java 中运行 CMD [关闭]
【发布时间】:2019-09-05 08:49:06
【问题描述】:

我是 Java 新手,我需要在 Java 中运行 CMD 或 Powershell,因为我想了解当前的 RAM 利用率和当前的磁盘分布 StackOverflow 上有很多类似的问题,但我不明白。

这是我的代码,我从here得到的:

package test;

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Main {

    public static void main(String[] args) {
    }

    public static class CmdTest {
        public static void main(String[] args) throws Exception {
            ProcessBuilder builder = new ProcessBuilder(
                    "cmd.exe", "/c", "cd \"C:\\Program Files\\Microsoft SQL Server\" && dir");
            builder.redirectErrorStream(true);
            Process p = builder.start();
            BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream()));
            String line;
            while (true) {
                line = r.readLine();
                if (line == null) {
                    break;
                }
                System.out.println(line);
            }
        }
    }

}

我只得到一个空控制台,我不知道为什么。

【问题讨论】:

  • 您的 ProcessBuilder 参数与您的实际问题不匹配(至少部分参数)。
  • 我很感激接受 ;-)
  • 我意识到我当时写的完全是垃圾。谢谢你当时有这么大的耐心xD

标签: java cmd


【解决方案1】:

这里:

public static void main(String[] args) {
}

你的 Main 类的 ma​​in 方法是空的,什么也不做。

然后您添加了 Main 的另一个 inner 类,名为 CmdTest。但是那个类,分别是它的 main 永远不会被调用。

我的建议是,直接删除 CmdTest 类,并将其代码放入现有的 Main.main() 中:

public class Main {
  public static void main(String[] args) throws Exception {
    ProcessBuilder builder = new ProcessBuilder(...

您还可以将 Main.java 重命名为 CmdTest.java,并且(基本上)删除旧的 Main,并让您的 CmdTest 成为它自己的公共顶级类。

仅作记录:格式很重要。我花了 2 分钟才弄清楚你的问题。为什么?因为格式错误。如果你有合理的缩进,那么潜在的问题在 5 秒内就会很明显。因此:始终一致地缩进,并将 } 放在新行上,即使块/方法为空!

最后:考虑到 OP 的自我回答和更多的语法实验,这里的真正答案是:退后一步。以this 为例,了解正确的类 + 主类的外观。 了解详细信息,然后开始插入您自己的代码。

【讨论】:

    猜你喜欢
    • 2012-10-02
    • 2013-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    相关资源
    最近更新 更多