为什么Perl系统调用不能调用内部Windows命令?

在我们的Windows XP机器之一上,Perl系统命令(例如dir /b生成一个错误消息,例如: /b: no such file or directory 。 换句话说,开关被解释为一个文件名。

无论我使用backticksopen()还是system() ,都会发生这种情况。 我什至尝试作为一个单独的parameter passing给系统()。 当然,我已经确认这个调用在DOS命令行或批处理脚本上正常工作。

有没有人遇到过这个?

Solutions Collecting From Web of "为什么Perl系统调用不能调用内部Windows命令?"

您可能已经安装了Cygwin,并且dir.exe位于您的路径中,而不是内置cmd.exe ,但是是ls的别名。

  C:\>哪个目录
在/ usr / bin中/ DIR

 C:\> c:\ opt \ cygwin \ bin \ dir.exe --version
目录(GNU coreutils)8.15
由Cygwin(8.15-1)
 ...

 C:\> dir / b
 ...

 C:\> perl -e“print`dir / b`”
 dir:无法访问/ b:没有这样的文件或目录

 C:\> perl -e“print`cmd / c dir / b`”
 ... 

未验证:

dir是一个命令解释器内置的命令。 改为使用/c/k开关运行命令解释器,然后执行您要执行的命令。