2

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

无论我使用backticks,open()还是system(). 我什至尝试将开关作为单独的参数传递给 system()。当然,我已经确认该调用在 DOS 命令行或批处理脚本上正常工作。

有没有其他人遇到过这个?

4

2 回答 2

5

您可能安装了 Cygwin 并且dir.exe在您的路径中,该路径不是cmd.exe内置的,而是ls.

C:\> 哪个目录
/usr/bin/目录

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

C:\> 目录 /b
…

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

C:\> perl -e "打印`cmd /c dir /b`"
…
于 2012-04-12T11:39:27.933 回答
1

未验证:

dir是命令解释器内置的命令。/c使用or开关运行命令解释/k器,后跟要执行的命令。

于 2012-04-12T09:25:19.210 回答