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

时间:2017-03-20 13:46:49

标签: java perl

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

txt

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

然后第二个脚本获取此输出,进行其他一些修改,然后将它们打印在新的txt文件中cmd

此命令行在Windows上使用|可以正常工作,但在使用java时,>void sendMessage(char data[]) { //sending data WiFiUDP Udp2; Udp2.beginPacket("192.168.0.123", 9875); //Serial.println("Sending data to android: "); Serial.println(data); Udp2.write(data); Udp2.endPacket(); delay(1); 存在问题。

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

1 个答案:

答案 0 :(得分:2)

问题是管道使用">"根本不起作用(当你制作那些java"进程"调用)时。

您需要做的是:在创建此类流程时,您可以(程序化地)获取其输入和输出流。

因此,您只需执行

,而不是执行管道命令
perl test.pl

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

有关如何操作的信息,请参阅here

或者,您可以增强perl脚本以获取文件名参数,以便您可以将其称为

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

。那么你的java端可以一次性完成两个调用。