Java 批处理文件通过命令提示符vs Processbuilder运行
我在使用Java Processbuilder运行批处理文件(“Input.bat”)时遇到了一个问题,但当我通过命令提示符(作为批处理)运行该文件时,它会正常工作: 问题是,当我通过Processbuilder运行时,没有将输入参数值写入文件“input.txt”。批处理肯定会执行,但不会从“ECHO%u%>Input.txt”写入任何内容Java 批处理文件通过命令提示符vs Processbuilder运行,java,batch-file,cmd,command-prompt,processbuilder,Java,Batch File,Cmd,Command Prompt,Processbuilder,我在使用Java Processbuilder运行批处理文件(“Input.bat”)时遇到了一个问题,但当我通过命令提示符(作为批处理)运行该文件时,它会正常工作: 问题是,当我通过Processbuilder运行时,没有将输入参数值写入文件“input.txt”。批处理肯定会执行,但不会从“ECHO%u%>Input.txt”写入任何内容 有什么线索吗?我认为,与其尝试将输出重定向到文件,不如从进程的输入流中读取,这样会更成功 例如: //Start the builder and retr
有什么线索吗?我认为,与其尝试将输出重定向到文件,不如从进程的输入流中读取,这样会更成功 例如:
//Start the builder and retrieve the created process
Proccess process = pb.start();
BufferedReader br;
String line;
//Get the regular output from the process
br = new BufferedReader(new InputStreamReader(
process.getInputStream()));
while((line = br.readLine()) != null)
{
System.out.println(line);
}
br.close();
您还可以获得任何错误输出:
//Get error output
br = new BufferedReader(new InputStreamReader(
process.getErrorStream()));
while((line = br.readLine()) != null)
{
System.out.println(line);
}
br.close();
这两个输入流将捕获发送到标准输出或标准错误的任何内容。一旦你捕获了它,你就可以用它做任何你想做的事。首先,你怎么知道“[t]这个批肯定已经执行了”?第二,Java进程的工作目录是什么?使用文件名
Input.txt
意味着将在进程的工作目录中创建该文件。我的坏,是,它将进入我的工作目录!!“将输出重定向到文件”-恐怕这不是我的要求。我需要将数据写入该文件,这是我逻辑的一部分。。我共享的代码只是一个示例,您可以使用Java本身来写入该文件。捕获流程的标准输出,然后将其写入文件。这可能比试图从通过Java运行的批处理文件中找出如何使其工作更容易。
//Start the builder and retrieve the created process
Proccess process = pb.start();
BufferedReader br;
String line;
//Get the regular output from the process
br = new BufferedReader(new InputStreamReader(
process.getInputStream()));
while((line = br.readLine()) != null)
{
System.out.println(line);
}
br.close();
//Get error output
br = new BufferedReader(new InputStreamReader(
process.getErrorStream()));
while((line = br.readLine()) != null)
{
System.out.println(line);
}
br.close();