1

我有一个 .exe 文件。当我运行它时,它会询问 CSV 和 .C 文件的路径。我的问题是我需要通过 Perl 执行该 .exe 并自动提供 .C 文件的路径以及 CSV 文件路径。我怎样才能做到这一点?它是一个通过打开命令的 gui .exe 我可以浏览并给出 c 文件和 CSV 的路径。我希望很清楚我想说什么......

链接到快照

如果你通过这个快照你可以理解我的 .exe 格式。我有 2 个单选按钮,我需要选择单选按钮 B 并按运行按钮。如果有人告诉我如何通过 perl 自动进行,请向他们表示感谢,非常感谢。“ IAM 使用 WINDOWS XP

4

4 回答 4

4

根据您提供的信息,我认为您可以尝试IPC-Run或者Expect CPAN module。这些允许您从 Perl 中控制外部控制台程序,并从中传递和读取 STDOUT/STDERR/STDIN 信息。

于 2010-01-04T16:36:53.023 回答
2

如果您只想执行应用程序,请使用该system功能。正如你所说,你有一个.exe我假设是 Windows,所以 Perl 看起来像:

$exitcode = system("c:\\Path\\App\\bin\\application.exe","C:\\dir\\file.csv");

这是使用推荐的调用方式system,传递一个数组,第一个条目是要运行的命令,其他条目是每个命令行参数。您可以将单个空格分隔的字符串传递给它,但数组方法更安全。

如果要捕获命令的输出,请使用 backticks。如果是,将文件路径放在引号中是最安全的:

$output = `"c:\\Path\\App\\bin\\application.exe" "C:\\dir\\file.csv"`;
print $output;
于 2010-01-04T09:33:24.333 回答
1

我猜你正在使用Windows。使用 System() 命令运行您的代码。这是一个例子:

system($command, @arguments);

# For example:
system( "sh", "script.sh", "--help" );
system("sh script.sh --help");
于 2010-01-04T09:35:52.323 回答
1

如果可执行文件期望参数(输入)作为命令行参数,则上面建议的方法可以正常工作。但是,如果您的程序在运行期间提示您输入并希望您通过标准输入输入输入,您可以尝试这样的操作:

假设我有一个名为 sum.exe 的程序,它在运行时会提示我输入两个数字并打印它们的总和。

C:\文档和设置> sum.exe
进入一个
1
输入 B
2
1 + 2 = 3

现在要通过 perl 运行这个 sum.exe,您可以执行以下操作:

system("sum.exe < input");

其中文件输入具有程序在运行期间期望/提示的所有输入。就我而言:

C:\Documents and Settings> 输入
1
2

因此,在您的情况下,您可以使输入文件包含 CSV 文件的路径和 .C 文件的路径。

于 2010-01-04T09:55:08.880 回答