Bir klasörü bir arşivden çıkarmak için 7-Zip komut satırı


16

Ben kullanıyorum 7-Zip , bir ayıklamak için CommandLine Posta denilen arşivi abc.zipbir içinde üç metin dosyaları ile 'fermuar' adlı klasörün (bir arşividir a.txt, b.txtve c.txt).

Benim sorunum aşağıdaki komutu kullanarak çıkarttığım zaman:

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

7-Zip şeyi ayıklar, ama bu fermuar ', sadece ayıklar klasörü çıkarmakla kalmayıp a.txt, b.txtve c.txt(yani ve çıkış hedefi koyar C:\abc).

7-Zip'i sadece asıl klasörü çıkartabilir miyim?

Yanıtlar:



9

Muhtemelen önünde bir tire olmalıdır o:

-oC:\abc

Ayrıca -rözyineleme seçeneğini de göz önünde bulundurun .


0

Benzer bir sorunu çözmek zorunda kaldım. İşte kullandığım kod. Bu komut dosyası bir klasör alır ve tüm fermuarları açar (ve daha sonra bunları siler). İşin püf noktası, verileri özel bir klasöre çıkarmak. Biraz sinirli ama işe yarıyor ...

@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
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.