无法将参数传递给perl脚本的dir命令

时间:2017-06-18 07:56:56

标签: perl cmd directory

我无法执行dir命令,指定要搜索的文件名all.xml时出错,我无法使用/s命令递归搜索,i得到以下错误cannot access no such file exists并且不理解/s参数用于递归搜索,程序将其解释为文件路径

use strict;
use warnings;  
print "i";
my $vall = ` dir  //server1/dxx/mxx/rxx/ "ui.xml"  /s`; 

print $vall;

1 个答案:

答案 0 :(得分:1)

这与Perl无关。您传递给dir的参数不正确。

  • dir/解释为选项的开头,除非它被引用,
  • 在路径中间有一个不应该存在的空间,
  • /s不适用于包含/和文件组件的路径。

此外,除了/b之外,您可能还需要/s

修正:

dir "\\server1\dxx\mxx\rxx\ui.xml" /s/b

所以

my $dir_output = `dir "\\\\server1\\dxx\\mxx\\rxx\\ui.xml" /s/b`;

实施例,

>dir "//localhost/C$/Users/ikegami/Desktop/" /s/b
\\localhost\C$\Users\ikegami\Desktop\a.jpg
\\localhost\C$\Users\ikegami\Desktop\cabinet.txt
...

>dir "//localhost/C$/Users/ikegami/Desktop/a.jpg" /s/b
File Not Found                                               <-- WTF?

>dir "\\localhost\C$\Users\ikegami\Desktop\a.jpg" /s/b
\\localhost\C$\Users\ikegami\Desktop\a.jpg
\\localhost\C$\Users\ikegami\Desktop\x\a.jpg

>dir \\localhost\C$\Users\ikegami\Desktop\a.jpg /s/b
\\localhost\C$\Users\ikegami\Desktop\a.jpg
\\localhost\C$\Users\ikegami\Desktop\x\a.jpg

>type a.pl
print `dir \\\\localhost\\C\$\\Users\\ikegami\\Desktop\\a.jpg /s/b`

>perl a.pl
\\localhost\C$\Users\ikegami\Desktop\a.jpg
\\localhost\C$\Users\ikegami\Desktop\x\a.jpg

那就是说,我个人使用File::Find::Rule

use File::Find::Rule qw( );

my $qfns =
   File::Find::Rule
   ->name('ui.xml')
   ->file
   ->in('//server1/dxx/mxx/rxx');