7-Zip 命令行从档案中提取文件夹

7-Zip 命令行从档案中提取文件夹

我正在使用7-Zip命令行来提取压缩档案名为abc.zip,该档案包含一个名为“zipper”的文件夹,其中包含三个文本文件(a.txtb.txtc.txt)。

我的问题是当我使用以下命令提取它时:

7z e C:\abc\abc.zip -y oC:\abc

7-Zip 会提取所有内容,但不会提取“zipper”文件夹,它仅提取a.txtb.txtc.txt并将它们放入输出目标(即C:\abc)。

我怎样才能让 7-Zip 仅提取实际文件夹?

答案1

您需要使用7z x archive.zip完整路径进行提取。请参阅:http://sevenzip.sourceforge.jp/chm/cmdline/commands/extract_full.htm

答案2

在 前面可能应该有一个连字符o

-oC:\abc

还要考虑-r递归选项。

答案3

我必须解决类似的问题。这是我使用的代码。此脚本接收一个文件夹并解压缩所有 zip 文件(然后删除它们)。诀窍是将数据解压缩到一个特殊文件夹中。有点棘手,但确实有效……

@echo off

set SEVEN_ZIP_HOME=C:\Program Files\7-Zip

set TEMPDIR=temp

set WORKING_DIR="%1"

if "%WORKING_DIR%"==""  set WORKING_DIR=%~dp0

cd /d %WORKING_DIR%

if not exist %TEMPDIR% md %TEMPDIR%

for %%i in ("%WORKING_DIR%\*.zip") do call :unzipAndDelete "%%i"

rd %TEMPDIR%

goto :end

:unzipAndDelete 

set ZIP_FILE=%~1

call :extractName %ZIP_FILE%

call "%SEVEN_ZIP_HOME%\7z.exe" e "%ZIP_FILE%" -o./%TEMPDIR%

copy .\%TEMPDIR%\*.* %FILENAME%.log

del .\%TEMPDIR%\*.* /q

del "%ZIP_FILE%"

goto :end

:extractName 

set FILENAME=%~n1
goto :end


:end

答案4

请谨慎考虑-r 文档中明确指出的内容:-)

-r[-|0]
递归子目录(注意:此标志不会按照您的想法执行,请避免使用它)

相关内容