2014-01-14 8 views
0

У меня есть PHP-скрипт, который выполняет команду извлечения 7-zip. Выбранное имя файла отличается от имени zipped-файла. Есть ли переключатель в командной строке 7-zip, чтобы указать имя вновь извлеченного файла?7zip - получить имя извлеченного файла

Как сохранить имя вновь извлеченного файла в переменной PHP?

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

Я думаю, что я должен сделать еще один exec() для самого последнего созданного файла, и сохранить это. Но должен быть более простой способ.

+0

Вы можете захватить вывод exec и искать имена файлов за 'Извлечение ..'. Если это обычный ZIP-файл, вы можете просто использовать ['ZipArchive'] (http://php.net/ZipArchive), чтобы увидеть, что внутри. – mario

+0

Я думаю, что вы на что-то. Как «захватить» вывод exec? Я попробовал '$ fileString = $ exec ($ extractCMD);' но это не содержит часть «Извлечение ....» –

ответ

1

Вы можете использовать -o указать выходной каталог, но это добавит слой глубины:

7z x -oMyDir some_file.zip 

Например, если some_file будет нормально выводиться some_file/ он теперь будет выводиться MyDir/some_file/.

Если вы просто хотите узнать имя каталога верхнего уровня в архиве, это немного сложнее. Вы можете получить список файлов перед экстракцией с помощью команды l:

7z l some_file.zip 

, но тогда вы должны анализировать имена файлов, чтобы увидеть, если есть каталог верхнего уровня на всех. Там не должно быть.

Смежные вопросы