web-dev-qa-db-ja.com

アーカイブからフォルダを抽出する7-Zipコマンドライン

7-Zip コマンドラインを使用して Zip と呼ばれるabc.Zipというアーカイブを抽出します。それ(a.txtb.txt、およびc.txt)。

私の問題は、次のコマンドで抽出するときです。

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

7-Zipはすべてを抽出しますが、「zipper」フォルダは抽出せず、a.txtb.txt、およびc.txtを抽出して、出力先(つまり、C:\abc)。

実際のフォルダーを抽出するだけで7-Zipを作成するにはどうすればよいですか?

16
meds

フルパスで抽出するには、7z x archive.Zipを使用する必要があります。参照: http://sevenzip.sourceforge.jp/chm/cmdline/commands/extract_full.htm

20
iglvzx

おそらくoの前にハイフンがあるはずです:

-oC:\abc

また、-r再帰のオプション。

9
kod

同様の問題を解決する必要がありました。これが私が使ったコードです。このスクリプトは、フォルダーを受け取り、すべての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
0
user536281