使用java和一些cmd操作符通过命令行运行perl脚本
我正在尝试使用以下java代码运行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时,和存在问题
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端可以一次完成两个调用