Programming Field

Compact - DOS/コマンドプロンプト コマンド一覧

NTFS上のファイルを圧縮・展開(非圧縮)します。

構文

compact[.exe] [/C | /U] [/S[:<directory>]] [/A] [/I] [/F] [/Q]
    [/EXE[:<algorithm>]] [/CompactOs[:<option>] [/WinDir:<directory>]]
	[<file-name> [...]]

オプション一覧

何もオプションを指定しない場合は、現在のディレクトリおよびその中にあるファイルの圧縮・非圧縮状態を出力します。

/C | /U /C を指定すると圧縮、/U を指定すると非圧縮の状態にします。圧縮状態を変更する場合は /C または /U を指定します。
/S[:<directory>]

対象のディレクトリ直下のファイルだけでなく、すべてのサブディレクトリとそのファイルも対象にします。コロン「:」とディレクトリ名(ディレクトリパス)を指定するとそのディレクトリ内を対象にします。(指定しなかった場合は現在のディレクトリを対象にします。)

/C および /U を指定していない場合はすべてのサブディレクトリとファイルの圧縮状態の表示、/C または /U を指定している場合はすべてのサブディレクトリとファイルの圧縮状態を変更します。

/A

隠しファイルおよびシステムファイルの属性を持つファイルを表示します。既定ではこれらのファイルは表示されません。

※ 表示されないだけで、対象に含まれる場合は /C および /U による圧縮状態の変更の影響を受けます。

/I 処理中にエラーが発生した場合でも処理を続行します。/I が指定されていない場合はエラーが発生したときに処理を中止し、以降のファイルは処理されない状態になります。
/F 圧縮状態が変わらない場合でも強制的に圧縮または非圧縮状態にします。既定では、/C が指定された場合は圧縮済みのファイル、/U が指定された場合は圧縮されていないファイルはスキップされます。/EXE を使って圧縮アルゴリズムを変えたい場合に有用です。
/Q 処理中の出力を簡易的なものにします。
/EXE[:<algorithm>]

[Windows 10 以降] 実行可能ファイルの特性(頻繁に読み取られ、変更されることが少ない)に合わせた圧縮アルゴリズムを使用します。コロン「:」に続けて <algorithm> に以下のアルゴリズムを指定します。(大文字・小文字は問われません。)

名前備考
XPRESS4K「/EXE」のみを指定した場合の既定値、読み取りが最速
XPRESS8K
XPRESS16K
LZX最大の圧縮率

<algorithm> を省略して「/EXE」とだけ指定した場合は「XPRESS4K」が、/EXE を指定せずに圧縮した場合は既定のアルゴリズム(/EXE で指定できないもの)が使用されます。

/CompactOs[:<option>

[Windows 10 以降] システムファイルの圧縮状態を表示・設定します。コロン「:」に続けて <option> に以下の値を指定します。(大文字・小文字は問われません。)

名前効果
query現在の状態を表示して終了します。
always圧縮を有効にしてシステムバイナリを圧縮します。
never圧縮を無効にしてシステムバイナリを圧縮解除します。

「/CompactOs」だけを指定した場合は「/CompactOs:query」と同じく現在の状態を表示します。また、状態変更には管理者権限が必要です。

/WinDir:<directory> [Windows 10 以降] 現在実行していないWindowsにおけるシステムファイルの圧縮状態を表示します。<directory> には現在実行していないWindowsのWindowsディレクトリを指定します。必ず /CompactOs:query とともに使用します。また、照会には管理者権限が必要です。
<file-name> [...]

圧縮状態の表示・変更を行う個別のファイル名を指定します。([...] の箇所に)ファイルを複数指定することができます。

/S を指定している場合は、/S で指定されたパスからの相対パスとして扱われますが、<file-name> にパス名が含まれない(ファイル名のみである)場合は、すべてのディレクトリ・サブディレクトリにある同じファイル名のファイルが対象になります。

解説

NTFSファイルシステムにはファイルを圧縮して保存する機能が存在します。Compactを利用することで、ファイルの圧縮・非圧縮状態を管理することができます。ファイルを圧縮した場合でも、圧縮されたファイルも普通のファイルと同じように扱うことができます(ただし無圧縮状態に比べて読み書きのパフォーマンスが劣る可能性があります)。

圧縮状態のファイルはAttribの属性には現れませんが、「%~a1」で出力される属性には現れます。

※ この圧縮機能はNTFSでのみ使用可能であり、ReFSでは使用できません。

サンプル1

compact

現在のディレクトリと、その中にあるファイルの圧縮状態を画面に表示します。

サンプル2

compact /S:D:\document /C

「D:\document」およびその中のすべてのディレクトリ・ファイルを圧縮状態にします。