2014-01-14 109 views
0

我有一个执行7-zip提取命令的PHP脚本。提取的文件名与压缩文件的名称不同。在7-zip命令行中是否有切换来指定新提取的文件名?7zip - 获取提取文件的名称

如何将新提取的文件的名称存储在PHP变量中?

if (endsWith($currentFile, '.zip')) 
{ 
    $extractCMD = '7z e uploads\\' . $currentFile; 
    exec($extractCMD); 
} 

我想我必须为最近创建的文件做另一个exec(),并将其存储。但必须有一个更简单的方法。

+0

您可以捕获exec输出并查找'Extracting ..'后面的文件名。如果它是一个普通的ZIP文件,您可以使用['ZipArchive'](http://php.net/ZipArchive)来查看里面的内容。 – mario

+0

我觉得你在做点什么。我如何“捕获”exec输出?我试过'$ fileString = $ exec($ extractCMD);'但那不包含'Extracting ....'部分 –

回答

1

您可以使用-o指定输出目录,但这将增加深度的层:

7z x -oMyDir some_file.zip 

例如,如果some_file通常会输出到some_file/它现在将输出到MyDir/some_file/

如果您只是想知道存档中顶级目录的名称,那会更棘手。您可以使用l命令得到的文件列表提取前:

7z l some_file.zip 

但你要分析的文件名,看是否有一个顶级目录都没有。没有必要。