在我们的一台Windows XP机器上,Perl系统命令(如dir /b
)会生成一条错误消息,如:/b: no such file or directory
。换句话说,开关被解释为文件名。
无论我使用 backticks
、 open()
还是 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
开关运行命令解释器,然后运行要执行的命令。