为什么Perl系统调用无法调用内部Windows命令



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

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

还有其他人遇到过这种情况吗?

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

C:\> 哪个目录/usr/bin/dirC:\> c:\opt\cygwin\bin\dir.exe --versiondir (GNU coreutils) 8.15由Cygwin包装(8.15-1)…C:\> 目录/b…C:\> perl -e "print 'dir/b'"目录:无法访问/b:没有这样的文件或目录C:\> perl -e "print 'cmd/c dir/b'"。

未验证:

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

最新更新