1

我试图在我的 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

感谢聊天室里的凯尔。

4

2 回答 2

1
c_drive = Dir.glob("**/")
%w(FolderA, FolderB).每个都做 |dir|
  如果 c_drive.include?(dir)
    提出“#{dir} 存在”
  别的
    puts "#{dir} 不存在"
  结尾
结尾
于 2012-09-05T20:50:50.770 回答
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
于 2012-09-05T20:53:29.807 回答