我正在尝试在我的C:/驱动器上找到匹配的文件夹列表,然后执行一些代码,但它没有按预期工作。
我可以使用单个文件夹做得很好,但不知道如何使用我想要查找的文件夹列表。
我的代码
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 :(得分: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
答案 1 :(得分: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