2016-02-17 32 views
1

我正在使用Ruby/Watir 我正在從一個網站下載文件,它們來自.zip文件夾 我想解壓這些文件夾,但我沒有知道下載的文件夾的名稱,所以我決定使用哪一個心不是工作如何解壓目錄中的多個文件夾 - 通配符不工作

Zip::File.open('my/directory/*.zip') { |zip_file| 
    zip_file.each { |f| 
    f_path=File.join("fil_download", f.name) 
    FileUtils.mkdir_p(File.dirname(f_path)) 
    zip_file.extract(f, f_path) unless File.exist?(f_path) 
    } 
    } 

回答

1

的「通配符」通配符實際上是一個名爲glob pattern功能。 Ruby支持那個槽Dir.glob()

它應該是:

Dir.glob('my/directory/*.zip') { |filename| 
    Zip::File.open(filename) { |zip_file| 
     zip_file.each { |f| 
      f_path=File.join("fil_download", f.name) 
      FileUtils.mkdir_p(File.dirname(f_path)) 
      zip_file.extract(f, f_path) unless File.exist?(f_path) 
     } 
    } 
} 
+0

這使得很多更有意義!非常感謝! – guestburg

+0

這是一個不同的事情,並不直接支持'Zip :: File'。之後你需要連接它們。或者調用一個shell命令。 UNIX上的unzip可以解壓縮到標準輸出。您可能會將其重定向到一個文件。我建議調查一下,如果你找不到解決方案,請提出一個新的問題來解決這個問題。 – hek2mgl

相關問題