it-swarm-ko.tech

이 폴더의 하위 디렉토리에있는 모든 아카이브를 어떻게 추출합니까?

폴더의 하위 디렉토리에 포함 된 여러 아카이브를 추출하여 아카이브가있는 폴더로 결과를 다시 출력하는 방법.

18
Dmitri Farkov

먼저 7-Zip 을 설치하십시오.

내부에 아카이브가있는 많은 서브 디렉토리를 포함하는 디렉토리의 루트에 bat 파일을 작성하십시오. 그런 다음 다음을 붙여 넣습니다.

FOR /D /r %%F in ("*") DO (
    pushd %CD%
    cd %%F
        FOR %%X in (*.rar *.Zip) DO (
            "C:\Program Files\7-Zip\7z.exe" x "%%X"
        )
    popd
)

방망이를 시작하면 모든 rar/zip이 포함 된 폴더로 추출됩니다.

어떻게 작동합니까?

FOR/D/r %% F in ( "*") DO (

루프가 현재 디렉토리의 모든 폴더를 반복하고 경로를 변수 %%F에 넣습니다.

% CD % 푸시

현재 디렉토리를 메모리에 넣습니다.

cd %% F

%%F 변수의 폴더를 현재 디렉토리로 설정하십시오.

FOR %%X in (*.rar *.Zip) DO (

현재 폴더의 모든 rarZip 파일에 대해 다음을 수행하십시오.

"C:\Program Files\7-Zip\7z.exe" x "%%X"

파일에서 7-Zip을 실행하십시오. 일부 파일 이름에는 공백이 있기 때문에 %%X 주위에 따옴표가 필요합니다.

popd

이전에 메모리에 저장했던 이전 디렉토리로 돌아갑니다.

이것이 누군가에게 유용하기를 바랍니다.

22
Dmitri Farkov

Windows Vista에서 스크립트를 실행하는 데 문제가있었습니다. 코드를 실행했을 때 아무 일도 일어나지 않았습니다. 스크립트를 실행하려면 관리자 여야했습니다. .bat 파일을 마우스 오른쪽 단추로 클릭하고 "관리자 권한으로 실행"을 실행하면 어떤 이유로 든 system32 폴더에서 시작 되었기 때문에 작동하지 않았습니다 (정확하게 기억하는 경우). 이 문제를 해결하려면 Windows 환경 변수 (여기 설명 : Windows 환경 변수 ) % ~ dp0을 사용하여 스크립트가 실행 된 디렉토리로 다시 전환하십시오.

@echo on
cd %~dp0

FOR /D /r %%F in ("*") DO (
pushd %CD%
cd %%F
    FOR %%X in (*.rar *.Zip) DO (
        "C:\Program Files\7-Zip\7z.exe" x %%X
    )
popd
)

* .rar 또는 * .Zip 파일이 스크립트와 동일한 레벨에 있지 않은지 확인하십시오. 그들은 한 수준 아래로 있어야합니다.

이 의견이 누군가에게 도움이 되었기를 바랍니다.

3
Daniel P

그러나 위의 답변은 작동하지만 Windows 64-bit7-Zip 32-bit를 실행중인 경우 7-Zip의 올바른 경로는 C:\Program Files (x86)\7-Zip입니다. 아래는 나를 위해 일한 스크립트입니다.

@echo on
cd %~dp0

FOR /D /r %%F in ("*") DO ( pushd %CD% cd %%F
    FOR %%X in (*.rar *.Zip) DO (
        "C:\Program Files (x86)\7-Zip\7z.exe" x %%X
    )
    popd
)
1
Ryan
find . -name "*.Zip" |  while read filename; do unzip -o -d "`dirname "$filename"`" "$filename"; done;

현재 디렉토리에서 재귀 검색을 시작하고 .Zip으로 끝나는 모든 파일을 찾은 다음 루프로 파이프합니다. 찾은 모든 파일에 대해 출력이 파일의 디렉토리로 분류 된 상태로 파일에서 unzip 명령을 실행합니다.

1
Curtis Tasker