如何检查perl是否是Windows命令?

时间:2016-06-19 12:34:05

标签: perl batch-file cmd

我想写一个批处理文件来静默安装Perl MSI。但是,服务器/ PC可能安装了Perl,批处理文件的流程将为:

  1. 检查Perl是否已安装。
  2. 如果未安装,请以静默方式安装。
  3. 我知道如果安装了Perl,命令perl-v会报告Perl版本,但是不知道如何通过Windows批处理文件检查perl命令是否可以在服务器/ PC上执行。< / p>

2 个答案:

答案 0 :(得分:3)

也许How do I get the application exit code from a Windows command line?Redirect Windows cmd stdout and stderr to a single file可能会对您有所帮助。

运行

perl -e1 2>NUL
if errorlevel 1 (
    echo Perl is not installed
)

perl -e1只是执行Perl表达式1作为单行程序,如果安装了Perl,它总是成功的。它根本不产生任何输出,除非它在没有找到Perl时抱怨。这就是为什么我将STDERR重定向到NUL所以你不会看到任何输出,甚至不会看到错误消息。

if errorlevel 1检查最后一个命令(本例中为perl -e1)的返回码是否为>=1。如果Perl已安装且可执行,则其返回码将为0(表示成功),if将不会触发。

你也可以使用perl -v 在STDOUT上产生输出。在这种情况下,您必须将STDOUT和STDERR重定向到NUL,如下所示:perl -v >NUL 2>&1

答案 1 :(得分:0)

>nul 2>nul where perl || echo not installed

这会检查perl而不尝试运行perl。

如果在%PATH%中列出的文件夹中找到文件/命令,则打印到STDOUT,如果没有,则打印到STDERR。