java执行命令提示符问题

发布于 2024-10-29 04:52:20 字数 1471 浏览 6 评论 0原文

public class CmdExec {

     public static void main(String argv[]) {
            try {
                Runtime rt = Runtime.getRuntime();
                StreamWrapper error, output;
                String TEMP = "/output:C:\\InstallList.txt product get name,version";     
                System.out.println(TEMP);
                CmdExec rte = new CmdExec();
                Process proc = rt.exec("wmic");
                proc = rt.exec(TEMP);

                error = rte.getStreamWrapper(proc.getErrorStream(), "ERROR");
                output = rte.getStreamWrapper(proc.getInputStream(), "OUTPUT");
                int exitVal = 0;
                error.start();
                output.start();
                error.join(3000);
                output.join(3000);
                exitVal = proc.waitFor();
                System.out.println("Output: "+output.message+"\nError: "+error.message);



     } catch (IOException e) {
         e.printStackTrace();
     } catch (InterruptedException e) {
         e.printStackTrace();
        }
}
}

获取异常:

java.io.IOException:CreateProcess:\输出:C:\InstallList.txt产品获取名称,版本错误= 123 在 java.lang.ProcessImpl.create(本机方法) 在 java.lang.ProcessImpl.(来源未知) 在 java.lang.ProcessImpl.start(来源未知) 在 java.lang.ProcessBuilder.start(来源未知) 在 java.lang.Runtime.exec(来源未知) 在 java.lang.Runtime.exec(来源未知) 在 java.lang.Runtime.exec(来源未知) 在 CmdExec.main(CmdExec.java:20)

public class CmdExec {

     public static void main(String argv[]) {
            try {
                Runtime rt = Runtime.getRuntime();
                StreamWrapper error, output;
                String TEMP = "/output:C:\\InstallList.txt product get name,version";     
                System.out.println(TEMP);
                CmdExec rte = new CmdExec();
                Process proc = rt.exec("wmic");
                proc = rt.exec(TEMP);

                error = rte.getStreamWrapper(proc.getErrorStream(), "ERROR");
                output = rte.getStreamWrapper(proc.getInputStream(), "OUTPUT");
                int exitVal = 0;
                error.start();
                output.start();
                error.join(3000);
                output.join(3000);
                exitVal = proc.waitFor();
                System.out.println("Output: "+output.message+"\nError: "+error.message);



     } catch (IOException e) {
         e.printStackTrace();
     } catch (InterruptedException e) {
         e.printStackTrace();
        }
}
}

getting Exception :

java.io.IOException: CreateProcess: \output:C:\InstallList.txt product get name,version error=123
at java.lang.ProcessImpl.create(Native Method)
at java.lang.ProcessImpl.(Unknown Source)
at java.lang.ProcessImpl.start(Unknown Source)
at java.lang.ProcessBuilder.start(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at CmdExec.main(CmdExec.java:20)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

℡Ms空城旧梦 2024-11-05 04:52:20

问题是您尝试将 "/output:C:\\InstallList.txt Product get name,version" 作为命令执行,但该命令不起作用。 (事实上​​,这对我来说似乎是无稽之谈。)

我希望您应该执行如下命令:

    rt.exec("wmic /output:C:\\InstallList.txt product get name,version");

The problem is that you are trying to execute "/output:C:\\InstallList.txt product get name,version" as a command and that isn't working. (Indeed, it looks like nonsense to me.)

I expect that you should be executing the command like this:

    rt.exec("wmic /output:C:\\InstallList.txt product get name,version");
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文