7-Zip コマンドラインを使用して Zip と呼ばれるabc.Zip
というアーカイブを抽出します。それ(a.txt
、b.txt
、およびc.txt
)。
私の問題は、次のコマンドで抽出するときです。
7z e C:\abc\abc.Zip -y oC:\abc
7-Zipはすべてを抽出しますが、「zipper」フォルダは抽出せず、a.txt
、b.txt
、およびc.txt
を抽出して、出力先(つまり、C:\abc
)。
実際のフォルダーを抽出するだけで7-Zipを作成するにはどうすればよいですか?
フルパスで抽出するには、7z x archive.Zip
を使用する必要があります。参照: http://sevenzip.sourceforge.jp/chm/cmdline/commands/extract_full.htm
おそらくo
の前にハイフンがあるはずです:
-oC:\abc
また、-r
再帰のオプション。
同様の問題を解決する必要がありました。これが私が使ったコードです。このスクリプトは、フォルダーを受け取り、すべての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