Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 批处理文件通过命令提示符vs Processbuilder运行_Java_Batch File_Cmd_Command Prompt_Processbuilder - Fatal编程技术网

Java 批处理文件通过命令提示符vs Processbuilder运行

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

我在使用Java Processbuilder运行批处理文件(“Input.bat”)时遇到了一个问题,但当我通过命令提示符(作为批处理)运行该文件时,它会正常工作:

问题是,当我通过Processbuilder运行时,没有将输入参数值写入文件“input.txt”。批处理肯定会执行,但不会从“ECHO%u%>Input.txt”写入任何内容


有什么线索吗?

我认为,与其尝试将输出重定向到文件,不如从进程的输入流中读取,这样会更成功

例如:

//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();