我有两个mp3文件,我想合并它们,我使用这样的cmd:
C:\Users\57477\Desktop>copy /b /y 1.mp3+2.mp3 3.mp3
它有效,但当我在java中使用时,它无法正常工作
String[] cmd = { "cmd.exe", "/c", "C:", "&&", "cd", "C:\\Users\\57477\\Desktop", "&&", "copy", "/b", "/y","1.mp3+2.mp3", "3.mp3" };
// this cmd also can't work
String cmd2 = "cmd.exe /c C: && cd C:\\Users\\57477\\Desktop && copy /b 1.mp3+2.mp3 3.mp3";
Runtime run = null;
try {
run = Runtime.getRuntime();
long start = System.currentTimeMillis();
Process p = run.exec(cmd);
// 释放进程
p.getOutputStream().close();
p.getInputStream().close();
p.getErrorStream().close();
p.waitFor();
long end = System.currentTimeMillis();
System.out.println(" convert success, costs:" + (end - start) + "ms");
} catch (Exception e) {
e.printStackTrace();
} finally {
run.freeMemory();
}
如果我只是复制一个文件,它可以工作,如下:
String[] cmd = { "cmd.exe", "/c", "C:", "&&", "cd", "C:\\Users\\57477\\Desktop", "&&", "copy", "/b", "/y","1.mp3", "3.mp3" };
// this cmd is effective
String cmd2 = "cmd.exe /c C: && cd C:\\Users\\57477\\Desktop && copy /b 1.mp3 3.mp3";
String cmd3 = "cmd.exe /c copy /b /y C:\\Users\\57477\\Desktop\\1.mp3 C:\\Users\\57477\\Desktop\\3.mp3";
我尝试使用start命令,如下所示:
cmd /c start copy /b /y C:\\Users\\57477\\Desktop\\1.mp3+C:\\Users\\57477\\Desktop\\2.mp3 C:\\Users\\57477\\Desktop\\3.mp3
它将打开一个窗口来运行此命令并且它可以正常工作,但窗口无法自动关闭。
我认为它应该是' +'干扰命令,但我不知道如何解决它,我使用谷歌和bing和百度,使用大约一天,也失败。
方便的时候,请你帮忙吗?任何帮助或建议将非常感激。提前谢谢。
答案 0 :(得分:0)
当我睡觉时,我找到了答案......我颠倒了这样的代码:
p.waitFor();
p.getOutputStream().close();
p.getInputStream().close();
p.getErrorStream().close();
现在正在工作......