티스토리 뷰

728x90
반응형

 

최근 윈도우 11 환경에서 폴더 안에 수백개의 압축 파일들을 받아 

파일을 하나씩 압축 프로그램으로 열어 풀어야 하는 일이 생겼다. 

 

프로그래밍을 해서 할 수도 있고 여러가지 방법이 있겠지만 마이크로소프트가 밀고 있는 power automate RPA로 가능하지 않을까 싶어 활용해 보기로 했다. 

 

프로그램 실행: power automate 

 

위 그림과 같이 흐름(flow)리스트를 선택하거나 생성할 수 있는 초기화면이다. 

 

흐름(플로우) 만들기 

새 흐름 버튼을 클릭하면 다음과 같이 흐름 이름을 입력하는 대화창이 나온다. 

적당한 이름을 입력하고 '만들기' 버튼을 클릭한다.

 

만들어진 플로우는 다음 그림과 같이 리스트가 추가된 것을 볼 수 있다.

 

동시에 해당 흐름을 편집할 수 있는 윈도우가 다음 그림과 같이 나타난다.

 

 

작업 추가: 폴더 안에 있는 파일 목록 받기

프로그래밍 개념과 유사하게 먼저 지정된 폴더에 있는 압축 파일 리스트를 받아와야 한다. 

작업 리스트 중에 '폴더' 부분 중 '폴더의 파일 가져오기' 작업을 찾아낸다.

 

'폴더의 파일 가져오기' 작업을 선택하면 다음과 같은 대화창이 뜬다. 

필요한 변수를 유저인터페이스 형태로 지정하는 방식이다. 

폴더는 원하는 압축파일들이 포함된 폴더를 찾아 선택한다. 

파일 필터는 다른 파일들이 포함되어 있을 수 있으므로 *.zip을 입력하여 zip파일만 선택되게 한다.  

 

입력이 완료되면 '저장' 버튼을 누른다. 

다음 그림과 같이 메인 캔버스에 저장한 작업이 보이게 되며 오른쪽 변수에 이 작업으로 산출되는 정보를 변수 형태로 지정되는 것을 알 수 있다. 변수는 실행이 되지 않아 비어 있다. 

 

여기서 실행을 해볼 수 있다. 비디오 버튼을 눌러 실행시키면 지금 만든 작업만 실행 시켜 결과를 볼 수 있다. 

테스트를 위해 D드라이브에 text 폴더를 만들고 안에 다섯 개의 압축 파일을 넣어두었다. 

 

power automate의 실행 아이콘(비디오 플레이 버튼)을 누르면 비어 있던 files변수를 클릭해서 보면 다음과 같은 창이 뜨는데 자세히 보면 다섯 개의 파일이 목록으로 떠있는 것을 알 수 있다. 

닫기 버튼을 누르고 다음 작업을 추가한다.

 

작업 추가: 반복 수행 

files 흐름 변수 안에 원하는 압축파일명이 있으니 이제 하나하나 파일명을 가지고 반복적으로 압축을 풀면 된다. 
코딩으로 치면 for-loop에 해당하는 반복 루프 기능이다. 

다음 그림처럼 '반복' 작업 항목 중 '각각의 경우' (아마 영어로는 for each 일 듯)를 선택한다.

 

다음과 같은 창이 나타나는데 여기서 반복할 값으로 좀 전에 생성된 흐름 변수 files를 선택한다. 

각각 하나씩 호출되는 파일명은 또 다른 흐름 변수 CurrentItem에 저장되는 것을 알 수 있다.

 

다음 그림과 같이 작업이 추가된 것을 알 수 있다. 

 

여기서 다시 실행 아이콘을 누르고 오른쪽 변수란의 CurrentItem을 살펴보면 각각의 다섯개의 파일이 하나씩 번갈아 가면서 나타나는 모습을 볼 수 있다. 이제 이 코드로 폴더안의 파일 명을 하나씩 하니씩 인출할 수 있는 상태가 되었다. 

 

작업 추가: 파일 압축 풀기 

이제 생성한 반복 작업 안에 각각의 파일에 대해서 압축을 풀면 된다. 

작업 중에 '압축' 항목 중 '파일 압축 해제' 작업 기능이 있다. 그런데 결론적으로 테스트 결과 원하는 것은 파일명에 해당하는 폴더를 만들고 압축을 해야 하는데 이에 대한 옵션이 없어 간단하게 활용할 수가 없었다.

 

대안으로 흔하게 쓰는 압축 프로그램을 찾아 보게 되었다.

반디집 프로그램은 다양한 압축 파일 포맷을 편하게 풀어 쓸 수 있고 무엇보다 해당 파일명으로 폴더를 생성하는 옵션을 제공한다. 게다가 다음과같이 커맨드 라인 옵션 파라미터를 제공해서  UI작업을 최소화 할 수 있게 되었다.

반디집 - 커맨드 라인 파라미터 (bandisoft.com)

 

반디집 - 커맨드 라인 파라미터

-fmt:{fmt} 압축할 때 사용할 파일 포맷을 지정한다.(zip, zipx, exe, tar, tgz, lzh, iso, 7z, gz, xz)

kr.bandisoft.com

 

원하는 파라미터는 다음 두가지다. 

커맨드 명령어  x: 압축풀기 명령

커맨드 스위치 -target:name 압축 파일 명으로 폴더를 만들고 그 안에 압축을 푸는 옵션

 

커맨드로 해석하면 다음과 같다. 

BandiZip.exe x -target:name [ 파일 ]

 

이제 필요한 것을 명령어를 실행시키면 된다. 

 

다음 그림 처럼 작업 리스트 중 '시스템' 파트 안에 '응용 프로그램 실행' 작업을 선택한다.

 

응용 프로그램 실행 옵션을 선택하는 창이 다음과 같이 나타난다. 

해당 입력 란에

  • 응용 프로그램 경로(bandizip.exe 실제 경로): C:\Program Files\BandiZip\Bandizip.exe
  • 명령줄 인수: x -target:name %CurrentItem% 
    (먼저 {x} 버튼을 눌러 CurrentItem을 선택하고 앞에 추가로 x -target:name을 추가 기입하면 쉬움)

 

다음과 같이 응응프로그램 실행 작업이 마지막 라인에 보이게 되는데 위치가 적절하지 않다.

 

작업 패널을 마우스로 드래그 해서 각각의 경우 루프 속으로 이동시켜 드롭하면 다음 그림과 같이 보인다.

 

지금까지 작성한 내용을 실행 시켜 본다.

다음 그림과 같이 다섯 개 압축 파일 기준 각각의 폴더이름이 생성되고 그 안에 압축이 풀려있는 것을 알 수 있다. 

그런데 문제가 있다. 프로그램이 압축하는 진행사항을 보여주는 프로그레스 창이 파일 갯수 만큼 떠 있는 것을 알 수 있다. 

결국, 압축 파일을 풀고 난 뒤에 해당 프로그레스 창을 닫아주지 않으면 파일 갯수 만큼의 윈도우가 떠 있는 상황이 발생한다. 500개 파일은 금방 500개 윈도우가 떠있게 되고 500번 닫기 버튼을 눌러서 일일이 윈도우를 닫아야 하다는 이야기다. 

 

작업 추가: 윈도우 닫기 

결국 하나의 작업이 더 필요하다, '닫기' 버튼을 눌러주는 방법이다. 

여러가지 고민한 끝에 창이 떠 있는 상태에서 '엔터'키를 누르면 창이 닫힌다는 점을 활용하기로 하였다. 

 

다음 그림과 같이 '마우스 키보드' 작업 리스트 중 '키 보내기' 작업을 선택한다.

 

키 보내기 작업 창에 변수 중 보낼 텍스트가 엔터키이므로 '특수키 삽이' 버튼을 눌러 리스트 중에 'Enter'를 고른다.

저장 버튼을 누르면 된다. 

 

다음 그림과 같이 마지막 줄에 있던 키보내기 작업을 반복 루프 안이면서 응용프로그램 실행 다음에 위치 시킨다. 

 

 

 

여기서 지나친 것은 압축이 풀리는데 시간이 걸린다는 점이다. 압축프로그램이 시작되자마자 키 보내기 작업으로 엔터가 쳐지만 압축이 풀리다가 중지되는 상황에 빠지게 된다. 실행시키면 다음과 같이 압축이 풀리다가 엔터키가 눌려 해당 프로그램이 중지할지를 물어보는 윈도우가 뜨게 된다. 

 

 

작업추가: 대기 시간

문제는 압축 해제가 다 완료가 난 시간 뒤에 키 보내기 작업을 수행해야 한다는 점이다. 

작업이 종료되는 시점을 기다리는 방법을 못찾아서 일단, 일정한 시간을 대기하는 작업을 추가해보기로 한다. 

 

다음 그림과 같이 '흐름제어' 작업리스트 중 '대기' 작업을 선택한다.

 

다음과 같이 대기 시간을 초단위로 입력할 수 있는 윈도우가 나타난다. 

필요한 시간을 넣는다. 압축파일이 금방 풀리면 1초나 2초로 충분하지만 크면 넉넉히 잡을 필요가 있다.

이 부분은 상황에 따라 다르게 잡아햐 할 것 같다. 

 

3초를 대기  시간으로 잡고 '저장' 버튼을 클릭하면 해당 작업이 캔버스에 마지막 하단에 위치하게 되는데 이를 아래 그림처럼 반복 루프 구조안 '응용 프로그램 실행' 작업과 '키 보내기' 작업 사이로 이동시킨다. 

 

 

이제 실행 시키면 하나 압축파일이 풀리고 3초  대기 후 프로그레스 창이 닫히고 다음 압축 파일이 반복되는 것을 알 수 있다. 

 

 

 

테스트용으로 다섯개의 압축파일만 사용했지만 다음 그림과 같이 파일이름으로 폴더가 생성되고 압축이 각각 해제된 결과를 다음과 같이 볼 수 있다.

 

 

728x90
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함