【问题标题】:run perl script by command line using java and some cmd operator使用 java 和一些 cmd 运算符通过命令行运行 perl 脚本
【发布时间】:2017-08-11 19:54:45
【问题描述】:

我正在尝试使用此 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


    【解决方案1】:

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

    您必须做的事情是:创建这样的流程时,您可以(以编程方式)获取其输入和输出流。

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

    perl test.pl
    

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

    请参阅 here 了解如何执行此操作。

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

    perl test.pl --write-to tmp.txt
    perl test1.pl --read-from tmp.txt --write-to test.txt
    

    例如。然后你的 java 端可以一次调用两个调用。

    【讨论】:

      猜你喜欢
      • 2021-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-16
      • 2016-06-03
      • 1970-01-01
      • 2013-07-18
      相关资源
      最近更新 更多