首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Java在Mac OS终端上运行命令

如何使用Java在Mac OS终端上运行命令
EN

Stack Overflow用户
提问于 2020-09-23 09:53:51
回答 2查看 128关注 0票数 0

我是一个高中生在一个项目中工作,将视频从YouTube链接转换为MP3,并下载它。但是,下载和转换视频格式YouTube的方式是通过Mac终端使用YouTube-dl。

这是我放入终端的内容:

代码语言:javascript
复制
youtube-dl -f bestvideo+bestaudio \"ytsearch:{https://www.youtube.com/watch?v=5X-Mrc2l1d0}\"

这在终端中是有效的,但是当我尝试使用:

代码语言:javascript
复制
Runtime.getRuntime().exec("cd /Users/poppa/Desktop/IA Vids");

这里有一个错误,说"No such file or directory"

我遇到的另一个问题是运行从Java输入到终端的代码。如果有帮助的话,我正在使用IntelliJ IDEA。谢谢!

EN

回答 2

Stack Overflow用户

发布于 2020-09-23 09:58:26

在目录路径中有一个空格。尝试使用双引号,如下所示:

代码语言:javascript
复制
Runtime.getRuntime().exec("cd \"/Users/zeidakel/Desktop/IA Vids\"");

还要注意,当(例如)使用new File("path")创建文件时,从JVM执行cd命令可能对当前用户目录没有影响

票数 1
EN

Stack Overflow用户

发布于 2020-09-23 16:36:36

如果cd的意思是change directory (并且不是可执行文件的名称),那么它几乎肯定不会生效,即使它被正确执行。由exec()产生的进程将有一个工作目录,并且可以对其进行更改--但这种更改只会影响产生的进程。

此外,在exec()的参数中使用空格本身就有问题。exec()不是shell,您无法通过使用诸如引号之类的shell机制来保护字符串不被空格拆分。相反,您需要自己将命令拆分成参数,知道拆分应该在哪里,然后使用接受String[]作为输入的exec()形式。也就是说,您可以自己将参数拆分为字符串数组,而不是依赖exec() (错误地)来执行此操作。

Runtime.exec()充满了困难,需要非常小心地处理。我在这里写了很多关于这个主题的文章:

http://kevinboone.me/exec.html

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64019918

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档