Dòng lệnh 7-Zip để giải nén thư mục từ kho lưu trữ


16

Tôi đang sử dụng 7-Zip commandline để trích xuất một ZIP lưu trữ gọi abc.zipđó là một kho lưu trữ với một thư mục có tên 'dây kéo' với ba tập tin văn bản trong đó ( a.txt, b.txtc.txt).

Vấn đề của tôi là khi tôi giải nén nó bằng lệnh sau:

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

7-Zip chiết xuất tất cả mọi thứ, nhưng nó không giải nén thư mục 'dây kéo', nó chỉ chiết xuất a.txt, b.txtc.txtvà đặt chúng trong các điểm đến đầu ra (có nghĩa là, C:\abc).

Làm cách nào để tạo 7-Zip chỉ cần giải nén thư mục thực tế?

Câu trả lời:



9

Có lẽ nên có một dấu gạch nối ở phía trước o:

-oC:\abc

Cũng xem xét các -rtùy chọn cho đệ quy.


0

Tôi đã phải giải quyết một vấn đề tương tự. Đây là mã tôi đã sử dụng. Kịch bản lệnh này nhận được một thư mục và giải nén tất cả các khóa (và xóa chúng sau đó). Bí quyết là giải nén dữ liệu vào một thư mục đặc biệt. Một chút sắc sảo nhưng nó hoạt động ...

@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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.