我希望我的 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/