티스토리 뷰

ETC/종합

윈도우 기본 압축 / 해제

BAEKNAMU 2015. 9. 17. 17:10
makecab.exe 도움말
Microsoft (R) Corporation. All rights reserved..
MAKECAB [/V[n]] [/D var=value ...] [/L dir] source [destination]
MAKECAB [/V[n]] [/D var=value ...] /F directive_file [...]
source File to compress.
압축할 파일
destination File name to give compressed file. If omitted, the
last character of the source file name is replaced
with an underscore (_) and used as the destination.
파일 이름을 압축할 파일에게 준다. 만약 빠졌다면,
파일이름의 마지막 문자열이 언더스코어(_)로 기록된다.
/F directives A file with MakeCAB directives (may be repeated).
지시문(아마도 반복된)으로 된 한개의 파일
/D var=value Defines variable with specified value.
열거된 값으로 가변적으로 정의내림
/L dir Location to place destination (default is current directory).
목적된 장소에 위치(기본값은 현재 디렉토리)
/V[n] Verbosity level (1..3).
상세수준(다른 곳에서 이와 관련된 사항을 검색한 결과,
지정한 값보다 높은 상세수준의 메시지는 조용히 무시된다고 한다.
가능한 값은 0(중요 메시지만), 1(에러), 2(경고), 3(정보), 4(디버그)라 하며,
지정하지 않은 경우 1(에러) 로 한다고한다.
사용예 /v1 또는 /v2 또는 /v3 등..(/v3 옵션의 경우 압축상황이 리스트로 출력된다.)
directive : 지령,명령,지시어,지시문
verbosity : 보버서티 , 다변,수다;용장,장황
define : 정의내리다, 밝히다, 한정하다, 특징짓다.
defines : 정의
he who defines first defines last : 처음 정의한자가 마지막을 정의한다.
사용예1)
하나의 파일을 캐비넷으로 압축할 경우,
1.txt 라는 파일을 압축할 경우, 아래와 같이 입력한다.
makecab 1.txt 1.cab
그러면, 1.cab 라는 캐비넷 파일이 생성되며 그안에는 1.txt 파일이 들어있게 된다.
사용예2)
만약, 사용예1에서 처럼 쓰되, 뒤에 변환될 캐비넷 파일이름을 지정해주지 않으면,
makecab 1.txt
위처럼 쓸경우, 생성되는 파일명은,
1.tx_
가 된다.
※ 여기서 생성된 1.tx_ 의 확장자 tx_ 를 zip 으로 바꾸고 열어보면, 1.txt 파일이 그 안에 들어 있음(1.zip 과 같은)을 확인할 수 있다.
사용예3)
/L 옵션 사용하여 원하는 폴더에 압축파일 넣기
실예) makecab 1.txt /L new
위의 명령은, 1.txt 파일을 new 라는 폴더에 압축해서 넣으라는 것으로,
1개의 파일압축에만 사용하며, 압축된 파일은 1.tx_ 로 생성된다.
사용예4)
참조:http://msdn2.microsoft.com/en-us/library/ms916839.aspx
makecab.exe /f 파일명(아마도 이 파일명은 압축할 파일들의 목록을 아래로 나열한 목록인듯)
따라서, 1.txt 라는 파일을 만들고, 이 파일안에 압축할 파일들의 목록을 한줄씩 할애하여 기재하고 테스트해보니,
두개의 파일(setup.inf, setup.rpt)과 한개의 폴더(disk1)가 생성되었다.
disk1 폴더안에는 1.cab 라는 캐비넷파일이 생성되었으며, 이 파일안에 텍스트파일에 기재했던 목록의 두 파일이 들어 있었다.
따라서, 여러파일을 하나의 캐비넷으로 묶으려 한다면,
텍스트문서에 목록들을 기재한후, makecab 를 실행시켜 하나로 묶게하고,
자동설치파일(inf)등은 제거한후 생성된 폴더안의 캐비넷 파일을 쓰면 된다.
실예)
현재 폴더에 makecab.exe 가 있고, a.a 라는 파일과 b.b 라는 파일이 있다.
이를 캐비넷파일로 묶기 위해서,
우선 1.txt 파일을 만든후, 그안에 아래와 같이 목록을 기재한다.
-------------------------------------
cmd.bat
cmd.ba_
-------------------------------------
그런다음, 아래와 같이 실행한다.
makecab /f 1.txt
그러면, 현재 폴더에 setup.inf 파일과 setup.rpt 파일과 disk1 이라는 폴더가 생기며,
disk1 폴더안에 1.cab 라는 압축파일이 생성된다.
setup.inf 파일의 내용은 아래와 같다.
-------------------------------------
;*** BEGIN **********************************************************
;** **
;** Automatically generated on: Mon Jan 08 21:41:41 2007 **
;** **
;** MakeCAB Version: 5.1.2600.0 **
;** **
;*** BEGIN **********************************************************
[disk list]
1,Disk 1
[cabinet list]
1,1,1.cab
[file list]
1,1,cmd.bat,33
1,1,cmd.ba_,167
;*** END ************************************************************
;** **
;** Automatically generated on: Mon Jan 08 21:41:41 2007 **
;** **
;*** END ************************************************************
-------------------------------------
setup.rpt 의 내용은 아래와 같다
-------------------------------------
MakeCAB Report: Mon Jan 08 21:57:43 2007
Total files: 2
Bytes before: 200
Bytes after: 178
After/Before: 89.00% compression
Time: 0.05 seconds ( 0 hr 0 min 0.05 sec)
Throughput: 4.25 Kb/second
-------------------------------------
사용법4)
.ddf 파일 이용하기.
임의의파일이름.ddf 라는 파일을 만든후, 다음과 같은 구문을 입력한다.
-------------------------------------
;
; cabwiz.ddf
;
; Template directive file to create the CAB file
;

.Set Cabinet=ON
.Set Compress=OFF ; 압축과 관련된 것으로 Smart Phone 이외에는 제공되지 않는다.
.Set CabinetFileCountThreshold=0 ; no files per cabinet threshold
.Set FolderFileCountThreshold=0 ; no files per folder threshold
.Set FolderSizeThreshold=0 ; no folder size threshold
.Set MaxCabinetSize=0 ; no max size for the cabinet
.Set MaxDiskFileCount=0
.Set MaxDiskSize=0 ; .cab 파일에 필요한 최대 크기의 공간을 잡는다.
.Set ReservePerCabinetSize=0 ; 디지털 서명에 필요한 공간을 남겨 놓는다.
.Set ReservePerDataBlockSize=0
.Set ReservePerFolderSize=0
.Set UniqueFiles=OFF

.Set CabinetNameTemplate=Sample.cab ; 이 부분은 cabwiz.ddf 예제파일에는 없다.(추가한 내용) 생성될 CAB파일 명을 입력한다.
.Set DiskDirectory1=sample ; sample 디렉토리를 생성한다.
sample.exe ; sample.cab 파일에 포함될 파일들(sample.exe, sample.dll, sample.xml)
sample.dll
sample.xml
.Set DiskLabel1=Setup ; 디스크 라벨을 Setup으로 한다.
;---임의 수정방법 예시(cab 파일명 및 폴더명을 변수로 지정하기)---
.Set cabname = test
.Set CabinetNameTemplate=%cabname%
.Set DiskDirectory1=%cabname%
;위처럼 지정할경우, 폴더명 및 cab파일명이 변수에 의해 일괄 지정된다.
;----------------------
;
; to be filled out by the CABWIZ.exe program
;.Set InfFileName=
;.Set RptFileName=
;.Set CabinetName1=
;
; followed by the list of files
-------------------------------------
위의 설명중 '임의 수정방법 예시' 부분만 1.txt 라는 파일목록 파일 상단에 집어 넣어도 똑같이 적용된다.
즉 .ddf 라는 확장자는 별 의미가 없다.
아래처럼 1.txt 라는 목록 파일을 만든후 아래부분만 넣어도 된다.
.Set cabname = test
.Set CabinetNameTemplate=%cabname%
.Set DiskDirectory1=%cabname%
;위처럼 지정할경우, 폴더명 및 cab파일명이 변수에 의해 일괄 지정된다.
이하 파일 목록(한줄당 하나의 파일명 기록)
... 이런 저런 방법을 연구해 보았지만, 더이상 편하게 사용할 수 있는 방법은 찾기 힘들며,
일반적으로 zip 프로그램이 깔려있지 않은 컴퓨터에서도 .cab 파일은 윈도우 자체에서 열어볼 수 있다.
따라서, 이런 cab 압축 프로그램을 이용한 파일압축은 공공기관등 유료로 zip 프로그램을 사용하기 곤란한 기관의 경우,
나름대로 유용하게 써먹을 수 도 있지만, 다소 사용 방법이 까다롭고,
또한, 압축할 목록에 폴더가 들어 있는 경우에 폴더 자체가 압축으로 묶이지 않기 때문에(알고리즘을 이용해 폴더를 생성하고 그 안에 복사해 넣을 수도 있겠지만),
사용상 일반사용자에게는 어려움이 있다.
다만, zip 프로그램이 깔려 있는 컴퓨터에서 애초에 zip 프로그램을 이용하여 .cab 으로 파일을 묶어서 그러한 곳에 보내준다면,
압축파일을 열어보는 곳에서 zip 프로그램이 깔려있지 않아도 쉽게 열어볼 수 있는 대안이 될 수 있겠다.


'ETC > 종합' 카테고리의 다른 글

아파치 403에러  (0) 2016.01.09
원격데스크톱 설정  (0) 2015.09.24
윈도우 web proxy 구축  (0) 2015.09.17
파이썬 스터디 사이트  (0) 2015.09.16
WINDOWS 7 라우터 MAC 정적 설정  (0) 2015.08.28
Comments
최근에 올라온 글
최근에 달린 댓글
TAG
more
Total
Today
Yesterday