2012-09-05 149 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

相關問題