2012-09-05 120 views
1

我正试图在我的C:/驱动器上找到一个匹配的文件夹列表,然后执行一些代码,但不能按预期工作。如何检查Ruby中是否存在文件夹列表?

我可以用单个文件夹做得很好,但不知道如何让它与我想找到的文件夹列表一起工作。

我的代码

Dir.glob("C:/*") 

directory_list = Array.new 

directory_list << "FolderA" 
directory_list << "FolderB" 

    if Dir.exists?(directory_list) 

     puts "Does exist" 

    else 

     puts "Does not Exist" 
    end 

以下解决方案在聊天室提供一个概念证明我

dirs = ["FolderA", "FolderB"] 
reg = Regexp.union dirs exists, 
rest = Dir.glob("{B,C,D}:/*").partition{ |path| path =~ reg } 
puts exists 

与感谢凯尔。

+0

你想这个通过你的C盘进行递归搜索这些文件夹? – muirbot

+0

如果可能,请递归。 – Ninja2k

回答

1

在Windows上,目录与驱动前缀,所以你需要:

"C:/FolderB" =~ /FolderB|FolderA/ 

代码:

dirs = ["FolderA", "Folderb"] 
reg = Regexp.union dirs 
exists, rest = Dir.glob("C:/*").partition{ |path| path =~ reg } 
# now you have two arrays, one of directories that exist and the rest 
1
 
c_drive = Dir.glob("**/") 
%w(FolderA, FolderB).each do |dir| 
    if c_drive.include?(dir) 
    puts "#{dir} exists" 
    else 
    puts "#{dir} does not exist" 
    end 
end 
+0

这似乎不起作用 - 我已将FolderB添加到C:/但代码返回它不存在。 – Ninja2k

+0

@ Ninja2k尝试摆弄Dir.glob线。我不知道这是如何工作在Windows上,也许是Dir.glob(“C:/ ** /”) – muirbot

+0

我们得到了一些工作上面,我需要我的头绕着代码,以便整合它与我的程序的其余部分。 – Ninja2k

相关问题