首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用java和一些cmd操作符通过命令行运行perl脚本

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

Stack Overflow用户
提问于 2017-03-20 13:46:48
回答 1查看 369关注 0票数 2

我试图使用以下java代码运行perl脚本:

代码语言:javascript
运行
复制
ProcessBuilder ps = new ProcessBuilder("perl","test.pl","test.txt","|", "test1.pl",">","result.txt");

因此,第一个脚本读取一个txt文件,然后打印一些结果。

然后,第二个脚本获得这个输出,执行其他一些修改,然后在一个新的txt文件result.txt中打印它们。

这个命令行在windows上使用cmd可以很好地工作,但是当使用java时,|>会出现问题。

有办法使用java运行这样的命令吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-20 13:49:33

问题是使用">“的管道根本无法工作(当您进行那些java "process”调用时)。

您必须做的是:当创建这样的流程时,您可以(编程地)获取它的输入和输出流。

所以,与其执行管道命令,不如

代码语言:javascript
运行
复制
perl test.pl

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

关于如何做到这一点,请参见here

或者,您可以增强您的perl脚本以接受文件名参数,以便您可以将它称为

代码语言:javascript
运行
复制
perl test.pl --write-to tmp.txt
perl test1.pl --read-from tmp.txt --write-to test.txt

例如。然后,您的java端可以一次性进行这两个调用。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42905270

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档