C:\user\test.wmv_info.txt 2>&1 时它有效,但是当我尝试通过调用命令提示符从 java-6ren">
gpt4 book ai didi

java - 使用java和命令提示符写入文件

转载 作者:行者123 更新时间:2023-11-29 03:53:00 26 4
gpt4 key购买 nike

当我从命令提示符运行此命令 ffmpeg -i "C:\user\test.wmv">C:\user\test.wmv_info.txt 2>&1 时它有效,但是当我尝试通过调用命令提示符从 java 文件执行相同的操作,它可以正常执行但不会写入文件。

知道为什么吗?

我的java代码是:

public void getInfoThroughCommandLine(String sourceFilePath) {
try {

String infoFile = sourceFilePath+"_info.txt";
String command = "ffmpeg -i \""
+ sourceFilePath +"\" >"+infoFile+" 2>&1";

// Execute the command
Process process = Runtime.getRuntime().exec("cmd.exe /c start " + command);

logger.info("Executing getInfoThroughCommandLine command: " + command);


// Read the response
BufferedReader input = new BufferedReader(new InputStreamReader(
p.getInputStream()));
BufferedReader error = new BufferedReader(new InputStreamReader(
p.getErrorStream()));

// Parse the input stream
String line = input.readLine();
System.out.println("ffmpeg execution of: " + sourceFilePath);
while (line != null) {
System.out.println("\t***" + line);
line = input.readLine();
}

// Parse the error stream
line = error.readLine();
System.out.println("Error Stream: " + sourceFilePath);
while (line != null) {
//do somthing
}

} catch (Exception e) {
System.err.println(e);
}
}

最佳答案

我假设您正在使用 getRuntime().exec() 来执行?

如果是这样,它返回的 Process 对象将是允许您访问所执行命令的输入/输出流的对象。只需从中读取并编写您自己的文件。

-- 根据评论讨论进行编辑 --

start in "cmd.exe/c start "+ command 将在单独的窗口中启动程序,我猜进程的流附加到该窗口。

C:\Users\z000dgqd>start /?
Starts a separate window to run a specified program or command.
........

尝试删除它。即

    // Change this:
Process process = Runtime.getRuntime().exec("cmd.exe /c start " + command);
// to this
Process process = Runtime.getRuntime().exec("cmd.exe /c " + command);

关于java - 使用java和命令提示符写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7838116/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com