NTFS圧縮されているかファイルやフォルダーを調べたり一覧出力する方法
2018/04/26
本エントリーの目次
Windows PCを使っていて、こんなふうに思うことがあるかもしれません。
NTFS圧縮されているかどうかを知りたい!
WindowsのファイルシステムにNTFSを使っている場合、ファイルやフォルダーの圧縮機能であるNTFS圧縮を使用可能です。
これを使えば、ディスク上のサイズを減らすことができ、ディスク領域を節約する効果を期待できます。
ただしその弊害として、圧縮されたファイルやフォルダーのデータを読み書きするときに圧縮・展開が行われるため、非圧縮状態と比べ、より多くのPCの計算リソースを使用します。
そのためPCのストレージの容量に余裕ができた場合は、一度設定したNTFS圧縮を解除したいこともあるでしょう。
NTFS圧縮の設定や解除は、対象となるファイルやフォルダーのプロパティーを開き、『全般』タブ上の『詳細設定』ボタン → 『内容を圧縮してディスク領域を節約する』というチェックボックスで行えるので、特に難しい作業ではありません。(チェックが入っていればNTFS圧縮が有効、チェックが入っていなければ無効 = 非圧縮状態。)
ですが無数にあるストレージ上のファイルやフォルダーすべてのプロパティーを開いて、設定状況を確認するのはとっても大変。
そこで今回は、簡単にNTFS圧縮されているかファイルやフォルダーを調べたり、NTFS圧縮されているファイルやフォルダーのフルパスを一覧出力する方法をご紹介します!
アイコンの追加表示で調べる方法
最も簡単な方法がこちら、ファイルやフォルダーがNTFS圧縮されているかどうかを、アイコンの画像で調べる方法です。
Windows 10の場合、NTFS圧縮されたファイルやフォルダーの右上に、青い矢印が向き合ったアイコンが追加表示される仕様となっています。
たとえばデスクトップにNTFS圧縮されていないフォルダーと、NTFS圧縮されているフォルダーがあった場合、以下のように表示されるアイコンに違いが生じます。
この画像では向かって右側のNTFS圧縮されたフォルダーの右上に、青い矢印が向き合ったアイコンが追加表示されているので、ひと目で右側がNTFS圧縮されているフォルダーだと分かりますよね!
青い矢印が向き合ったアイコンの追加表示はデスクトップにかぎらず、エクスプローラー上でも表示されます。
したがってファイルやフォルダーがNTFS圧縮されているかどうかを調べたい場合、そのファイルやフォルダーの親フォルダーをエクスプローラーで開き、NTFS圧縮の追加アイコンが表示されているかを確認するのが、最も簡単でしょう。
エクスプローラーのカラー表示を利用する方法
Windows OSのフォルダーオプションから設定できるカラー表示機能により、NTFS圧縮されたファイルやフォルダーを色分け表示することが可能です。
この機能を使ってNTFS圧縮されているかどうかを判別する場合、エクスプローラーやコントロールパネルからフォルダーオプション(エクスプローラーのオプション)を表示。
『表示タブ』→『暗号化や圧縮されたNTFSファイルをカラーで表示する』のチェックボックスにチェックを入れてください。
この設定により、以下画像のとおりNTFS圧縮されているファイルやフォルダーは青い文字で。
NTFS圧縮が行われていない(非圧縮状態の)ファイルやフォルダーは黒文字で表現されるようになります。
尚、『暗号化や圧縮されたNTFSファイルをカラーで表示する』チェックボックスの設定は、アイコンの追加表示で調べる方法でご紹介した、青い矢印が向き合ったアイコンの追加表示には影響しません。(『暗号化や圧縮されたNTFSファイルをカラーで表示する』チェックボックスが無効でも、NTFS圧縮されていれば青い矢印アイコンは表示される。)
そのためエクスプローラーの文字色を変えたくない場合は、アイコンの追加表示を使って判別すると良いでしょう。
コマンド操作でNTFS圧縮されているかどうかを調べる方法
コマンド操作でNTFS圧縮されているかどうかを調べる方法には、たとえばcompactコマンドを使用する方法やPowerShellのコマンドレットを使用する方法が挙げられます。
これからご紹介するそれら方法の説明には、C:\testというパスのフォルダー配下に、以下状態のファイルやフォルダーが存在する前提で説明しています。
compactコマンドを使用する方法
WindowsにはcompactというNTFS圧縮を取り扱うコマンドが用意されています。
このコマンドを使ってNTFS圧縮されているかどうかを調べることが可能です。
compactコマンドはパラメーターの設定によりファイルやフォルダーをNTFS圧縮したり、解凍する機能を持ったコマンドです。
また圧縮や解凍を指示するパラメーターを設定せずに実行すれば、カレントディレクトリーの圧縮・解凍状態を調べることもできます。
ただしcompactコマンドだけでは『隠しファイル』属性を持ったファイルやフォルダーがリストアップされないため、/aパラメーターを付けて実行すると良いでしょう。
コマンドプロンプトを起動して実際にコマンドを実行すると、以下のような結果が取得されます。
そして、ファイルやフォルダー名の前に『C』という文字列が存在するファイルやフォルダーが、NTFS圧縮されています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | c:\test>compact /a c:\test\ の一覧 新しくこのディレクトリに追加されるファイルは、圧縮されません。 0 : 0 = 1.0 : 1 1_圧縮されていないファイル.txt 0 : 0 = 1.0 : 1 C 2_圧縮されているファイル.txt 0 : 0 = 1.0 : 1 C 3_圧縮されているファイル.txt 0 : 0 = 1.0 : 1 a_圧縮されていないフォルダー 0 : 0 = 1.0 : 1 C b_圧縮されたフォルダー 0 : 0 = 1.0 : 1 C c_圧縮されたフォルダー(隠しフォルダー) 1 ディレクトリ内の 6 ファイル 圧縮ファイル 4、非圧縮ファイル 2。 合計 0 バイトのデータが、0 バイトに格納されました。 データの圧縮率は 1.0 : 1 です。 c:\test> |
PowerShellのコマンドレットを使用する方法
ファイルやフォルダーがNTFS圧縮されているかどうかを、PowerShellのコマンドレットを使って調べる場合、Get-ItemやGet-ChildItemコマンドレットで取得できるファイル・フォルダーオブジェクトのAttributesの内容を確認します。
NTFS圧縮されていれば、AttributesにCompressedという文字列が含まれています。
単一のファイルやフォルダーがNTFS圧縮されているかどうかを調べるケースでは、Get-Itemコマンドレットを使えばOKです。
しかし、特定のフォルダー内に含まれるファイルやフォルダーがNTFS圧縮されているかどうかを調べる場合は、Get-ChildItemコマンドレットを使いましょう。
NTFS圧縮されているかどうかを調べたいだけであれば、必要な情報はファイル・フォルダーのフルパスとAttributesだけ。
したがってSelect-Objectと組み合わせ、以下のようにコマンドレットを実行すれば、カレントディレクトリーの圧縮・解凍状態を調べられます。
1 2 3 4 5 6 7 8 9 10 11 12 13 | PS C:\test> Get-ChildItem -Force | Select-Object FullName,Attributes FullName Attributes -------- ---------- C:\test\a_圧縮されていないフォルダー Directory C:\test\b_圧縮されたフォルダー Directory, Compressed C:\test\c_圧縮されたフォルダー(隠しフォルダー) Hidden, Directory, Compressed C:\test\1_圧縮されていないファイル.txt Archive C:\test\2_圧縮されているファイル.txt Archive, Compressed C:\test\3_圧縮されているファイル.txt Archive, Compressed PS C:\test> |
先にも書いたとおりNTFS圧縮されていれば、AttributesにCompressedという文字列が含まれています。
そのため上記結果からは、4つのファイルやフォルダーがNTFS圧縮されていることが分かります。
尚、-Forceパラメーターを付与しているのは、compactコマンドの/aパラメーターと同様に、隠しファイル・フォルダーもリストアップの対象とするためです。
特定フォルダー配下のNTFS圧縮されたファイルやフォルダーのフルパスをすべて一覧出力する方法
ここまでにご紹介した方法では、特定フォルダー配下のファイルやフォルダーについてのみ、NTFS圧縮されているかどうかを調べることができます。
もし特定フォルダー配下のフォルダーを再帰的に調べ、すべてのファイルやフォルダーを確認。
特定フォルダー配下のNTFS圧縮されたすべてのファイルやフォルダーのフルパスを取得したい場合は、先にご紹介したPowerShellのコマンドレットを使用する方法を応用すれば、取得可能です。
この方法の説明にあたっては以下構成のフォルダーを使用。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | C:\test | 1_圧縮されていないファイル.txt | 2_圧縮されているファイル.txt | 3_圧縮されているファイル.txt | +---a_圧縮されていないフォルダー | 7_圧縮されていないファイル.txt | 8_圧縮されているファイル.txt | 9_圧縮されているファイル(隠しファイル).txt | +---b_圧縮されたフォルダー | 4_圧縮されているファイル.txt | 5_圧縮されているファイル.txt | 6_圧縮されていないファイル.txt | \---c_圧縮されたフォルダー(隠しフォルダー) |
そして『C:\test』フォルダー配下のすべてのファイルやフォルダーを再帰的に調べ、NTFS圧縮されているファイルやフォルダーをリストアップします。
各フォルダーのNTFS圧縮の状態は、以下画像のとおりです。
『C:\test』フォルダー配下のNTFS圧縮状態:
『C:\test\a_圧縮されていないフォルダー』フォルダー配下のNTFS圧縮状態:
『C:\test\b_圧縮されたフォルダー』フォルダー配下のNTFS圧縮状態:
今回は『C:\test』フォルダー配下のファイルやフォルダーについて調べるため、Set-Locationコマンドレッドでカレントディレクトリーを『C:\test』フォルダーに変更。
1 | Set-Location C:\test\ |
次に以下コマンドを実行すれば、カレントディレクトリー内のNTFS圧縮されているファイルやフォルダーのフルパスをすべて取得します。
1 | Get-ChildItem -Recurse -Force | Where-Object{$_.Attributes -like "*Compressed*"} | Select-Object FullName | Sort-Object FullName |
本コマンドを実際に実行してみると、以下のような結果文字列が取得されます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | PS C:\test> Get-ChildItem -Recurse -Force | Where-Object{$_.Attributes -like "*Compressed*"} | Select-Object FullName | Sort-Object FullName FullName -------- C:\test\2_圧縮されているファイル.txt C:\test\3_圧縮されているファイル.txt C:\test\a_圧縮されていないフォルダー\8_圧縮されているファイル.txt C:\test\a_圧縮されていないフォルダー\9_圧縮されているファイル(隠しファイル).txt C:\test\b_圧縮されたフォルダー C:\test\b_圧縮されたフォルダー\4_圧縮されているファイル.txt C:\test\b_圧縮されたフォルダー\5_圧縮されているファイル.txt C:\test\c_圧縮されたフォルダー(隠しフォルダー) PS C:\test> |
もしカレントディレクトリーの移動が面倒な場合は、Get-ChildItemのパラメーターにパスを指定して実行してください。
1 | Get-ChildItem C:\test\ -Recurse -Force | Where-Object{$_.Attributes -like "*Compressed*"} | Select-Object FullName | Sort-Object FullName |
またコマンドの実行結果をファイル出力したい場合は、以下例を参考にしてください。(カレントディレクトリーのresult.txtに結果を取得する例。)
1 | Get-ChildItem -Recurse -Force | Where-Object{$_.Attributes -like "*Compressed*"} | Select-Object FullName | Sort-Object FullName > "result.txt" |
ファイルやフォルダーがNTFS圧縮されているかどうかを調べたいときや、再帰的に調べて特定ファルダー配下のNTFS圧縮されたファイルやフォルダーをリストアップしたいときは、今回ご紹介した方法を活用くださーい!