Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 如何解压缩目录中的多个文件夹-通配符不起作用_Ruby_Wildcard_Watir_Unzip - Fatal编程技术网

Ruby 如何解压缩目录中的多个文件夹-通配符不起作用

Ruby 如何解压缩目录中的多个文件夹-通配符不起作用,ruby,wildcard,watir,unzip,Ruby,Wildcard,Watir,Unzip,我在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))

我在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)
   }
  }
“通配符”实际上是一个名为。Ruby支持这个槽

应该是:

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)
        }
    }
}

那就更有意义了!非常感谢你!这是另一回事,而且不受
Zip::File
的直接支持。之后需要将它们连接起来。或者调用shell命令<例如,UNIX上的code>unzip可以提取到标准输出。您可以将其重定向到一个文件。我建议进行一点调查,如果你不应该找到一个解决方案,就提出一个新的问题。