
zip 파일이 있습니다 results.zip
. 여기에는 여러 개의 zip 파일( PASS/test1.zip
, FAIL/test2.zip
, ) 이 포함된 두 개의 폴더가 포함되어 있습니다 FAIL/test3.zip
.
Linux에서는 몇 가지 단계를 거쳐 압축을 푸는 것이 간단합니다.
$ unzip results.zip
$ echo FAIL/*.zip PASS/*.zip | xargs -n1 unzip
일부 Windows 사용자는 Windows에서 모든 파일의 압축을 푸는 것이 번거롭다고 불평합니다. (메인 zip 안에 수십 개의 zip이 있습니다.) 모든 파일의 내용을 한 번에 확장할 수 있는 메커니즘이 있습니까?
일부 고객 상자는 최신 버전이지만 여전히 WinXP를 사용하고 있는 고객 상자도 많습니다.
답변1
그들에게 줘압축 해제.exe그리고 다음과 같은 배치 스크립트
unzip results.zip
for %%i in (FAIL\*.zip PASS\*.zip) do unzip %%i
답변2
답변3
다음은 7zip이 기본 위치에 설치되어 있다고 가정하는 Windows용 솔루션입니다.
@echo off
Setlocal EnableDelayedExpansion
Set source=%1
Set SELF=%~dpnx0
For %%Z in (!source!) do (
set FILENAME=%%~nxZ
)
set FILENAME=%FILENAME:"=%
"%PROGRAMFILES%\7-zip\7z.exe" x -o* -y "%FILENAME%"
rem DEL "%FILENAME%"
For %%Z in (!source!) do (
set FILENAME=%%~nZ
)
for %%a in (zip rar jar z bz2 gz gzip tgz tar lha iso wim cab rpm deb) do (
forfiles /P ^"%FILENAME%^" /S /M *.%%a /C "cmd /c if @isdir==FALSE \"%SELF%\" @path"
)
노트:
- ~ 수정자를 사용하여 변수 수정을 수행하는 유일한 방법은 더미 for..in 루프를 사용하는 것입니다. 더 좋은 방법이 있으면 수정해주세요.
- ~nx는 변수를 수정하여 전체 경로+파일 이름으로 만듭니다.
- ~dpnx는 %0에도 동일한 작업을 수행합니다. 즉, 스크립트의 전체 경로와 파일 이름을 가져옵니다.
- 7zip 명령줄의 -o*를 사용하면 GUI에서 마우스 오른쪽 버튼을 클릭하여 압축을 풀 때처럼 7zip이 .zip 확장자 없이 폴더 이름을 만들 수 있습니다.
- ~n은 변수를 수정하여 확장자가 없는 파일 이름으로 만듭니다. 즉, .zip을 삭제합니다.
- 의 이스케이프 문자(따옴표의 경우)는
FORFILES /P
(^
캐럿)이고 의 경우CMD /C
입니다\
. 이렇게 하면 공백이 포함된 경로와 파일 이름도 문제 없이 재귀적으로 처리할 수 있습니다. - 압축을 푼 후 zip 파일을 삭제하려면 DEL 문에서 REM을 제거하면 됩니다.
답변4
이것 좀 봐
http://www.softpedia.com/get/Compression-tools/Multi-Unpacker.shtml
"중첩된 아카이브 처리(다른 아카이브에 압축된 아카이브를 반복적으로 추출)."
운영체제: 윈도우 2K / XP / 2003 / 비스타