0
my $exe = "'C:/Program Files/Common Files/executable.exe'";

if(! -X $exe) {
    print "exe file not found";
    exit 3;
}

my $cmd = $exe.' status';
@lines = qx ( $cmd );

我的问题是我可以很好地执行这个命令,但我一辈子都无法弄清楚如何检查 exe 文件是否存在。有什么提示吗?我尝试了不同类型的引号,-f、-X、-e ... 没有任何效果!任何帮助深表感谢。

4

1 回答 1

3

-f运算符可以正常工作,只是文件名中有多余的引号。

当然,-f在 Windows 上告诉您的只是文件存在并且不是目录,但大概这就是您所需要的。

如果路径包含空格,则需要在可执行文件名称周围的命令行中添加额外的引号,但最好在您需要它们的时候而不是更早地这样做。尝试这个:

my $exe = 'C:/Program Files/Common Files/executable.exe';

unless (-f $exe) {
    print "exe file not found";
    exit 3;
}

my $cmd = qq("$exe" status);
my @lines = qx($cmd);
于 2012-11-12T18:35:32.480 回答