使用java和一些cmd操作符通过命令行运行perl脚本

使用java和一些cmd操作符通过命令行运行perl脚本,java,perl,Java,Perl,我正在尝试使用以下java代码运行perl脚本: ProcessBuilder ps = new ProcessBuilder("perl","test.pl","test.txt","|", "test1.pl",">","result.txt"); 因此,第一个脚本读取一个txt文件,然后打印一些结果 然后第二个脚本得到这个输出,进行一些其他修改,然后将它们打印到一个新的txt文件result.txt 在windows上使用cmd时,此命令行工作正常,但在使用java时,和存在问题

我正在尝试使用以下java代码运行perl脚本:

ProcessBuilder ps = new ProcessBuilder("perl","test.pl","test.txt","|", "test1.pl",">","result.txt");
因此,第一个脚本读取一个
txt
文件,然后打印一些结果

然后第二个脚本得到这个输出,进行一些其他修改,然后将它们打印到一个新的txt文件
result.txt

在windows上使用
cmd
时,此命令行工作正常,但在使用java时,
存在问题


有没有一种方法可以使用java运行这样的命令?

问题是使用“>”的管道根本不起作用(当您进行那些java“进程”调用时)

您必须做的是:当创建这样一个流程时,您可以(通过编程)获取其输入和输出流

因此,您不需要执行管道命令,只需执行

perl test.pl
然后,您的java代码必须从该进程的stdout读取该内容并将其写入文件;或者在您的情况下,将其写入运行第二个脚本的另一个进程调用的stdin中

请看如何做到这一点

或者,您可以增强perl脚本以获取文件名参数,这样您就可以像这样调用它

perl test.pl --write-to tmp.txt
perl test1.pl --read-from tmp.txt --write-to test.txt
比如说。然后,java端可以一次完成两个调用