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

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 に答える
1
c_drive = Dir.glob("**/")
%w(FolderA, FolderB).each do |dir|
  c_drive.include?(dir) の場合
    puts "#{dir} が存在します"
  そうしないと
    puts "#{dir} は存在しません"
  終わり
終わり
于 2012-09-05T20:50:50.770 に答える