youtube-dl 在设置保存位置时将 "C:\" 转换为 "C#\"
youtube-dl converts "C:\" to "C#\" when setting save location
我正在为 youtube-dl 的 Windows exe 版本创建一个基于 Java 的 GUI。
README 的 OUTPUT TEMPLATE 部分说 -o
可用于在下载时设置保存位置和文件名。
当我通过命令行使用该程序时,我可以使用 youtube-dl.exe -o "C:\Users\<user>\Videos\%(title)s.%(ext)s" <youtube-link>
将下载位置设置为正常,它会正常下载到指定文件夹。
但是,当我通过 Java 调用流程时,使用 ProcessBuilder
如下:
output = "-o \"" + save_path + "\%(title)s.%(ext)s\"";
Process process = new ProcessBuilder("lib\youtube-dl.exe", output, url.getText()).start();
我不断收到以下输出:
-o "C:\Users\nightstalker\Videos\youtube-dl\%(title)s.%(ext)s"
Thread Start
[youtube] wnc77S-g0qQ: Downloading webpage
[youtube] wnc77S-g0qQ: Extracting video information
[youtube] wnc77S-g0qQ: Downloading js player en_US-vfljL8ofl
[youtube] wnc77S-g0qQ: Downloading DASH manifest
[download] Destination: C#\Users\nightstalker\Videos\youtube-dl\Some Video.mp4
这就是 save_path
的样子
File save_path = new File("C:\Users\"+System.getProperty("user.name")+"\Videos\youtube-dl");
这基本上会创建一个名为 C#\Users\nightstalker\Videos\youtube-dl
的文件夹,并继续在那里下载。
有什么原因吗?
我将回避格式问题,希望提供一个仍然适合您的答案。
ProcessBuilder 可让您按如下方式设置工作目录:
Process p = null;
ProcessBuilder pb = new ProcessBuilder("do_foo.sh");
pb.directory("/home");
p = pb.start();
Source:
您可以设置 而不是将整个路径放入传递给 youtube-dl 的 -o 选项中directory() on the ProcessBuilder to **C:\Users\\Videos** 如下:
output = "\"%(title)s.%(ext)s\"";
Process process = new ProcessBuilder("lib\youtube-dl.exe", "-o", output, url.getText()).directory("save_path").start();
我正在为 youtube-dl 的 Windows exe 版本创建一个基于 Java 的 GUI。
README 的 OUTPUT TEMPLATE 部分说 -o
可用于在下载时设置保存位置和文件名。
当我通过命令行使用该程序时,我可以使用 youtube-dl.exe -o "C:\Users\<user>\Videos\%(title)s.%(ext)s" <youtube-link>
将下载位置设置为正常,它会正常下载到指定文件夹。
但是,当我通过 Java 调用流程时,使用 ProcessBuilder
如下:
output = "-o \"" + save_path + "\%(title)s.%(ext)s\"";
Process process = new ProcessBuilder("lib\youtube-dl.exe", output, url.getText()).start();
我不断收到以下输出:
-o "C:\Users\nightstalker\Videos\youtube-dl\%(title)s.%(ext)s"
Thread Start
[youtube] wnc77S-g0qQ: Downloading webpage
[youtube] wnc77S-g0qQ: Extracting video information
[youtube] wnc77S-g0qQ: Downloading js player en_US-vfljL8ofl
[youtube] wnc77S-g0qQ: Downloading DASH manifest
[download] Destination: C#\Users\nightstalker\Videos\youtube-dl\Some Video.mp4
这就是 save_path
的样子
File save_path = new File("C:\Users\"+System.getProperty("user.name")+"\Videos\youtube-dl");
这基本上会创建一个名为 C#\Users\nightstalker\Videos\youtube-dl
的文件夹,并继续在那里下载。
有什么原因吗?
我将回避格式问题,希望提供一个仍然适合您的答案。
ProcessBuilder 可让您按如下方式设置工作目录:
Process p = null; ProcessBuilder pb = new ProcessBuilder("do_foo.sh"); pb.directory("/home"); p = pb.start();
Source:
您可以设置 而不是将整个路径放入传递给 youtube-dl 的 -o 选项中directory() on the ProcessBuilder to **C:\Users\
output = "\"%(title)s.%(ext)s\"";
Process process = new ProcessBuilder("lib\youtube-dl.exe", "-o", output, url.getText()).directory("save_path").start();