Powershell脚本无法在Java代码中运行

时间:2019-01-21 14:56:12

标签: java powershell

我有一个简单的脚本,我想从Java代码中调用它。该脚本无法正常运行。

脚本非常简单: mkdir 0000000;

public static void main(String[] args) throws Exception{
    String path = "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe";
    String command = "C:\\test\\test.ps1";
    Runtime runtime = Runtime.getRuntime();
    Process proc = runtime.exec(path + " " + command);
    proc.destroy();
}

未创建目录“ 0000000”。我使用的是JDK 7,Windows 10。

任何建议将不胜感激。

2 个答案:

答案 0 :(得分:1)

我更改了以下代码,终于成功了!

    public static void main(String[] args) throws Exception{
        String path = "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe";
        String command1 ="cmd /c \"cd C:\\test && " + path + " /c .\\test.ps1\"";
        Runtime runtime = Runtime.getRuntime();
        Process proc = runtime.exec(command1);
        Thread.sleep(2000);
        proc.destroy();
    }

答案 1 :(得分:1)

('table_id', table_id_value) 异步运行该进程,因此后续的exec()会立即终止它,然后再执行任何操作。如果从交互式外壳运行程序,则只需删除proc.destroy()即可缓解该问题,但要真正解决该问题,您需要等待外部过程完成。您可能还想捕获proc.destroy()(或exec())可能引发的异常。

waitFor()