为啥我不能从我的 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,
start
、rem
等不是可执行程序。它们是 shell 命令。只有命令外壳才能理解它们。你必须运行它们
cmd /c echo
cmd /c start chrome
等等
【讨论】:
以上是关于为啥我不能从我的 java 程序运行批处理命令? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
为啥我的电脑CMD 中mysqldump和mysql命令不能用
imp命令不知道为啥不能用了,提示'imp'不是内部或外部命令,也不是可运行的程序或批处理文件。