본문 바로가기
stdFrog/알쓸잡

[Powershell] Zip파일 압축 · 해제 오류 해결

by stdFrog 2022. 10. 7.


서론


 

일상에서 자주 사용되는 압축 파일은 대부분 Zip 파일 형식으로, 흔히 알집과 같은 툴을 이용해 압축을 쉽게 풀거나 해제할 수 있죠.

 

 그런데, 특별히 툴을 사용하지 않고 압축을 풀 때 간혹, 정상적으로 동작하지 않을 때가 있습니다.

 

대표적으로, 압축을 풀었으나 내부 파일을 열 수 없는 경우가 있죠.

글 상단의 대표 사진에서와 같은 0x8000xxxx라는 알 수 없는 오류코드와 함께 메시지 창이 출력되는 상황이 발생하곤 합니다.

 

 사실, 위와 같은 오류는 딱히 해결할 수 있는 방법이 없습니다.

 

그래서 알집과 같은 프로그램 사용을 권장하고 있는데, 만약 다운받을 수 없는 상황이거나 사용을 했음에도 오류가 발생했다면 아래 방법을 통해 다시 시도해볼 순 있습니다.

 


본문


 특별한 툴을 이용하지 않고 내부 유틸리티만으로 파일 압축을 풀고 싶다면 Powershell 또는 Cmd와 같은 인터프리터를 이용합니다.

 

방법이 꽤나 간단하니 아래 사진을 참고하여 순서대로 진행해보시기 바랍니다.

 

1. Windows Key + R

 

 먼저, 압축 파일이 위치한 폴더를 열어야 됩니다.

 

보통 웹 브라우저를 통해 다운받은 파일은 Downloads 폴더에 있으며, 이는 실행창을 통해 빠르게 접근할 수 있습니다.

실행창은 스페이스바 좌측에 있는 윈도우즈 로고 키와 R키를 동시에 누르면 생성됩니다.

 

2. 압축파일이 있는 폴더로 이동

 실행창에서 Downloads를 입력하고 확인 버튼을 누르면 위와 같이 탐색기가 시작되고 Download 폴더로 이동됩니다.

 

만약, 바탕화면이나 임의의 폴더에 압축파일을 보관해두었다면 탐색기를 통해 해당 파일이 있는 경로로 이동해줍니다.

 

3. 해당 폴더에서 Shift + 우클릭

 그 다음, 폴더의 빈 공간에 커서를 옮기고 shift키를 누른 채로 우클릭 버튼을 눌러줍니다.

그러면 위와 같이 컨텍스트 메뉴(우클릭 메뉴)가 열립니다.

 

 여기서 조금 혼동스러울 수 있습니다.

이제 인터프리터(터미널)를 열어야 하는데, 일반 사용자의 경우 위 사진과 달리 [여기에 명령 창(cmd) 열기] 또는 [여기에 파워쉘(Powershell) 열기]와 같은 이름을 찾아 클릭해주면 됩니다.

 

cmd / powershell 실행

 그럼 위와 같이 유틸리티를 사용할 수 있는 창이 생성되며, 아래 명령을 복사하여 입력하시면 됩니다.

 

Powershell, cmd 어느 쪽에서나 실행 가능하며 아래 명령을 복사한 후 우클릭하여 붙여넣기


cmd.exe /c "for %i in (*.zip) do md %~ni && tar.exe -x -f %~nxi -C %~ni"

 

해석은 다음과 같습니다.

 

1. cmd.exe /c

  •  뒤에 오는 문자열이 지정하는 명령어를 수행하고 종료합니다.

 

2. for %i in (*.zip)

  • "for"는 반복문을 의미하는 기본 구문이고 뒤의 "%i in (*.zip)"은 현재 경로에서 zip 파일 형식을 가진 모든 파일을 반복해서 불러온 후 %i라는 변수에 담습니다.

 

3. do md %~ni

  •   md는 make directory의 약자이며, %~ni는 정규표현식으로 filename의 의미를 갖습니다. 즉, 압축 파일과 똑같은 이름을 갖는 폴더를 하나 생성합니다.

 

4. tar.exe -x -f %~nxi -C %~ni

  •  tar.exe는 2010년부터 윈도우즈 운영체제와 함께 기본 배포되는 시스템 유틸리티이며, 옵션으로 사용된 -x는 Extract의 약자이고 -f는 filename, %~nxi는 for구문의 정규표현식입니다.
  •  뒤의 -C는 Change의 약자로, 위 3번에서 생성한 똑같은 이름의 폴더에 압축 파일을 풉니다.

 


실행 화면


명령 실행 시 화면

 이전에 올렸던 Powershell의 Expand-Archive라는 네이티브 명령보다 훨씬 간단해졌습니다.

사진에선 /r 옵션을 추가하여 하위 경로 포함했는데 보기가 좀 어려울 뿐이지 실제로는 되게 단순한 동작을 수행하죠.

 

이어서 파일을 압축하는 방법에 대해서도 알아보겠습니다.



파일 압축


 

파일을 압축할 때 역시 시스템 유틸리티인 tar를 사용할 수 있습니다.

 

다만, tar를 이용한 압축은 실제 파일의 용량을 줄이는 압축이라기 보단 패키지처럼 하나의 파일로 묶는 것에 가깝습니다.

 

하여, 닷넷 API 함수를 이용하는 Powershell의 cmdlet 명령을 통해 실제 용량을 줄이는 압축방법에 대해 설명하겠습니다.

 

시작 전에 위에서 설명한 것과 같이 압축하려는 파일이 위치한 곳에서 Powershell을 열어주시면 됩니다.

 

현재 폴더 내 png파일

위 사진에 나온 png 파일들은 실제 배경화면으로 사용하는 용량이 큰 이미지 파일들입니다.

이걸 모두 묶어서 압축할 생각이며 파일 압축에 사용할 네이티브 명령은 다음과 같습니다.

 

Powershell

> Get-ChildItem -Path .\*.png | Compress-Archive -DestinationPath Image.zip -CompressionLevel Optimal

위 텍스트를 그대로 복사해서 사용하시면 됩니다.

단, 파일의 확장자(.png)를 확인하고 본인이 압축하려는 파일의 확장자로 고쳐서 사용하셔야 됩니다.

 

예시는 다음과 같습니다.

Example


1. 이미지 파일(.jpg)
> Get-ChildItem -Path .\*.jpg | Compress-Archive -DestinationPath Image.zip -CompressionLevel Optimal

2. 이미지 파일(.jpeg)
> Get-ChildItem -Path .\*.jpeg | Compress-Archive -DestinationPath Image.zip -CompressionLevel Optimal

 


실행 화면


압축 실행

완료되었다는 안내 문구는 따로 출력되지 않으니 위와 같은 화면이 지나가면 해당 폴더를 열어 확인하시면 됩니다.

 

 

완료 시 다음과 같이 현재 폴더에 zip 압축 파일이 생성됩니다.

 

압축파일 확인
압축 파일 내부

압축된 파일은 위와 같이 이미지가 노출되지 않습니다.

 

이번엔 반대로 파일 압축을 해제하는 cmdlet 명령을 사용해보겠습니다.

 


압축 풀기


압축 파일 풀기

파일의 압축을 풀기 위한 네이티브 명령은 다음과 같습니다.

 

Powershell

> Expand-Archive -Path .\Image.zip -DestinationPath .\압축해제확인

위에서 만든 "Image.zip"이라는 이름의 압축 파일을 풀어 "압축해제확인"이라는 이름으로 폴더를 생성합니다.

이 폴더 내에 압축 해제된 이미지 파일들이 저장됩니다.

 

만약, 다른 이름으로 된 zip 파일을 해제하거나 압축을 푼 파일을 저장할 폴더의 이름을 변경하고 싶다면 다음과 같이 입력하시면 됩니다.

Example

> Expand-Archive -Path .\압축파일이름.zip -DestinationPath .\해제파일이름


1. 파일 이름 - Reference.zip
> Expand-Archive -Path .\Reference.zip -DestinationPath .\Reference

2. 파일 이름 - StudFrog.zip
> Expand-Archive -Path .\StudFrog.zip -DestinationPath .\StudFrog

 


실행 화면


압축 풀기 실행

완료 시 같은 경로(폴더) 내에 압축을 푼 폴더가 생성되며 해당 폴더를 열어 저장된 파일을 확인하실 수 있습니다.

 

압축 해제 파일 확인

위 외에도 다양한 압축 관련 옵션이 존재하며 이에 대한 자세한 내용은 아래 링크에서 확인하실 수 있습니다.

 

 

Expand-Archive (Microsoft.PowerShell.Archive) - PowerShell

The Expand-Archive cmdlet extracts files from a specified zipped archive file to a specified destination folder. An archive file allows multiple files to be packaged, and optionally compressed, into a single zipped file for easier distribution and storage.

learn.microsoft.com

글은 이만 줄이겠습니다

감사합니다.

반응형

댓글