为啥我不能从我的 java 程序运行批处理命令? [复制]

Posted

技术标签:

【中文标题】为啥我不能从我的 java 程序运行批处理命令? [复制]【英文标题】:Why can't I run a batch command from my java program? [duplicate]为什么我不能从我的 java 程序运行批处理命令? [复制] 【发布时间】:2014-08-24 23:04:23 【问题描述】:

我正在尝试从我的 java 应用程序运行命令。我从用户那里得到输入并运行这行代码:Runtime.getRuntime().exec($userInput);。我尝试了很多简单的命令,包括“echo”、“start chrome”和“rem”。似乎唯一有效的命令是“cmd.exe”,我什至不知道它的作用。

诸如“echo”之类的命令会产生这个错误:

java.io.IOException: Cannot run program "echo": CreateProcess error=2, The system cannot find the file specified
            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 me.Draconwolver.Main.runCmd(Main.java:119)
            at me.Draconwolver.Main.main(Main.java:34)
Caused by: java.io.IOException: CreateProcess error=2, The system cannot find the file specified
            at java.lang.ProcessImpl.create(Native Method)
            at java.lang.ProcessImpl.<init>(Unknown Source)
            at java.lang.ProcessImpl.start(Unknown Source)
            ... 6 more

请随时向我询问更多详情。

【问题讨论】:

"echo" 是 DOS shell 的命令,它不直接属于 Windows 本身。您的 Java 需要运行“cmd”,并让 cmd 执行“echo”。您可以在此处找到更多详细信息:java2s.com/Questions_And_Answers/Java-File/batch-File/… 【参考方案1】:

因为echo,startrem等不是可执行程序。它们是 shell 命令。只有命令外壳才能理解它们。你必须运行它们

cmd /c echo
cmd /c start chrome

等等

【讨论】:

以上是关于为啥我不能从我的 java 程序运行批处理命令? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的jdk安装好了后,java程序能编译却不能运行啊?

为啥我的电脑CMD 中mysqldump和mysql命令不能用

如何从我的 Java 应用程序运行批处理文件?

imp命令不知道为啥不能用了,提示'imp'不是内部或外部命令,也不是可运行的程序或批处理文件。

为啥我不能从我的 Xamarin Froms 应用程序发布到我的 .net 核心 web api

我的批处理文件不断循环,但为啥?