通过Java

时间:2015-10-28 09:58:34

标签: java windows cmd

通过Java在Windows命令提示符下运行某些命令会遇到一些麻烦。我希望进入我的system32文件夹并运行某个文件,但它不会填充该命令。以下代码段:

System.out.print("Press 1 for Normal or 2 for Keygen - " + client);
        String mode = input.nextLine().trim();
        if (mode.equals("1")) {
            String command = "cmd /c start cmd.exe";
             final String dosCommand = "cmd /c dir /s";
                final String location = "C:\\WINDOWS\\system32"; 
            Process child = Runtime.getRuntime().exec(command);
             OutputStream out = child.getOutputStream();
                out.write(dosCommand.getBytes());
                out.flush();
                out.write(location.getBytes());
                out.close();
        } else if (mode.equals("2")) {

        } else {
            System.out.println("Option not recognised");
        }

1 个答案:

答案 0 :(得分:1)

您的代码似乎陷入了困境。请尝试使用此代码:

System.out.print("Press 1 for Normal or 2 for Keygen - " + client);
String mode = input.nextLine().trim();

if (mode.equals("1")) {
    final String location = "C:\\WINDOWS\\system32";
    Runtime rt = Runtime.getRuntime();
    rt.exec("cmd.exe /c start dir /p", null, new File(location));
} else if (mode.equals("2")) {
} else {
    System.out.println("Option not recognised");
}

以下是我在自己的计算机上运行此代码段时发生的情况:

enter image description here

如果要运行实际程序,可以在Runtime.exec()的调用中指定。例如,假设您要启动一个窗口并打印出Java版本。对此的命令是java -version,您可以使用以下代码行:

rt.exec("cmd.exe /c start cmd /k java -version", null, new File(loc));

在这里,您会注意到我在命令中添加了额外的cmd /k。即使程序运行完毕,这也会使窗口保持打开状态。