PHP使用7zip进行数据的批量解压

下载了254个zip的文件,需要进行解压,比较奇特的是这些文件并无单独的一级目录结构,否则批量选中全部解压即可,没有这些选项就只能写个脚本循环解压,效果还是很好的。

7z的命令还是很友好的,当然这里是windows下的操作,不太合适直接使用unzip等命令。

<?php
//more @see https://github.com/loveyu/BlogCodeSegment/blob/master/GEO/gadm/unzip/unzip.php
if(!isset($argv[2]) || empty($argv[2])) {
    die("Error argv.");
}
$data_dir = $argv[1];
$output_dir = $argv[2];

if(!is_dir($data_dir) || empty($output_dir) || !is_dir($output_dir)) {
    die("Error dir.");
}

$list = glob("{$data_dir}/*.zip");
foreach($list as $file) {
    $out = $output_dir.DIRECTORY_SEPARATOR.pathinfo(basename($file), PATHINFO_FILENAME);
    $exe_file = EXE_7zip;
    $unzip_cmd = ""{$exe_file}" x "{$file}" -y -o"{$out}"";
    system($unzip_cmd);
}

最终输出形式如:

7-Zip 17.00 beta (x64) : Copyright (c) 1999-2017 Igor Pavlov : 2017-04-29

Scanning the drive for archives:
1 file, 374721 bytes (366 KiB)

Extracting archive: H:\IDM\GeoDataAdmAll\ZWE_adm_shp.zip
--
Path = H:\IDM\GeoDataAdmAll\ZWE_adm_shp.zip
Type = zip
Physical Size = 374721

Everything is Ok

Files: 19
Size:       971938
Compressed: 374721

当前还没有任何评论

写下你最简单的想法