java - 如何使用java执行CMD命令?

标签 java

我希望我的 java 程序执行以下操作:

访问cmd并执行命令:“d:”、“cd D:\Java Projects\imageProject”、“screenshot-cmd”

我尝试用谷歌搜索并找到一些代码示例,但它们都不起作用,因为我可能不知道我在做什么。

这就是我现在拥有的:

static void imageFromCMD(){
     ProcessBuilder builder = new ProcessBuilder(
                "cmd.exe", "d:", "cd D:\\Java Projects\\imageProject",
                "screenshot-cmd");
     Process p = builder.start(); 
}

该代码不会失败,但我没有得到我期望的输出(目录中的图像)

我想我错过了“发送”部分,但我到底该怎么做呢?

最佳答案

你能试试这个吗?

ProcessBuilder processBuilder = new ProcessBuilder();
Path workingDir = Paths.get("D:\\Java Projects\\imageProject");
processBuilder.directory(workingDir.toFile()); // Edited here
processBuilder.command(".\\screenshot-cmd");
try {
    processBuilder.start();
} catch (Exception ex) {
    ex.printStackTrace();
}

另一种选择是在创建 ProcessBuilder 时提供可执行文件的完整路径

ProcessBuilder processBuilder = new ProcessBuilder("D:\\Java Projects\\imageProject\\screenshot-cmd");
try {
    processBuilder.start();
} catch (Exception ex) {
    ex.printStackTrace();
}

需要注意的一点是,如果您在创建ProcessBuilder时没有设置工作目录,则默认情况下主进程的目录就是工作目录(基本上来自您的主类所在的位置)被调用),也许尝试查看那里,看看屏幕截图是否被保存到该位置

关于java - 如何使用java执行CMD命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59674252/

相关文章:

java - JSP 读取器/写入器无法正常工作

java - 如何在 ScrollView 中缩放 TextView ?

java - 跟踪 "hidden"异常

java - Guice - 当您只知道接口(interface)时如何获取实例

java - Log4j2:仅记录到文件,没有控制台?

java - 如何在 MyEclipse 中调试 GWT 项目?

java - @Transactional 注释与 saveAndFlush 一起使用?

java - Math.round 没有按我想要的方式工作

java - JPA : Select JPQL with several new

java - 如何按组显示数据?