Programming Field

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

ファイルの属性を変更します。

構文

attrib[.exe] [+R | -R] [+A | -A] [+S | -S] [+H | -H]
    [+O | -O] [+I | -I] [+X | -X] [+P | -P] [+U | -U]
    [<file-name>] [/S [/D]] [/L]

オプション一覧

+R, -R, +A, -A, +S, -S, +H, -H, +O, -O, +I, -I, +X, -X, +P, -P, +U, -U

各属性を設定・解除します。+ はその属性を設定、- はその属性を解除します。

文字意味
R読み取り専用属性です。これがあると上書き保存できません。また、Delコマンドでの削除もできなくなります([Windows NT] /F スイッチを使った場合を除く)。
Aアーカイブ属性です。バックアップ アプリケーションの一部は、この属性のついたファイルをバックアップします。
Sシステム ファイル属性です。システムのファイルとして、いろいろなアクセスが厳重になります。例えば、システム ファイル属性のついたファイルは、この属性を解除するまで他の属性を変更できません。また、Dirコマンドなどで、特別なオプションをつけない限り、この属性を持つファイルは表示されません。Windowsではこの属性があると、Explorer上では表示されますが隠しファイル属性を変更できません。
H隠しファイル属性です。Dirコマンドなどで、特別なオプションをつけない限り、この属性を持つファイルは表示されません。Windows エクスプローラでは、表示されても半透明で表示されます。
O[NTFS/ReFSファイルシステム] オフライン属性です。この属性が付いたファイルは基本的にリモート上に存在し、何らかの理由で即座にデータが利用できない可能性があることを示します。
I[NTFS/ReFSファイルシステム] 非インデックス対象属性です。インデックス機能(ファイル検索を高速にするための機能)が有効になっている場合でも、この属性があるファイルのコンテンツ(中身)に対してはインデックスの対象から外します。
X[NTFS/ReFSファイルシステム] スクラブ処理対象外属性です。「記憶域スペース」上またはReFS上のファイルに対して有効であり、バックグラウンドで行われる整合性チェック(スクラブ処理)において、この属性の付いたファイルについてはチェック対象外とします。
P[Windows 10 1709 以降] [NTFS/ReFSファイルシステム] OneDriveで共有する際、「このデバイス上で常に保持する」かどうかを示します(後述)。ディレクトリに指定した場合は、その中のファイルに対する既定値として扱われます(中に存在するファイルすべてを保持するという意味にはなりません)。OneDriveで共有されるファイル/ディレクトリに対してのみ有効です。また、「P」と「U」は同時に指定できません。
U[Windows 10 1709 以降] [NTFS/ReFSファイルシステム] OneDriveで共有する際、「空き容量を増やす」という指定がなされているかを示します(後述)。OneDriveで共有されるファイル/ディレクトリに対してのみ有効です。

「+」または「-」のオプションを1つも指定しなかった場合は、上記表の文字を使って対象ファイル/ディレクトリの属性を表示します。

またファイルの属性を表示する際、以下の属性がある場合は追加でそれらも表示されます。

文字意味
V[ReFSファイルシステム] 整合性ストリーム(整合性属性)です。ファイルに対しコピーオンライト(Copy on Write; COW; Allocate on Writeとも)が働くようにする場合にこの属性を指定します。
B[Windows 10 1709 以降?] [NTFSファイルシステム?] (不明、ファイル属性 FILE_ATTRIBUTE_STRICTLY_SEQUENTIAL に対応します。ヘルプでは「SMR Blob 属性」と説明されています。)

※ 「V」および「B」は現状「+」や「-」での属性変更はできない模様です。(Windows 11 22H2 時点)

<file-name> 属性を変更するファイルを指定します。省略すると現在のディレクトリ内のファイルすべてに対してコマンドを実行します(「+」や「-」の引数を指定しなかった場合はすべてのファイルの属性を表示し、属性変更の引数を指定した場合は一括で変更します)。
/S 現在のディレクトリにあるすべてのファイルと、その中のすべてのサブディレクトリ中のファイルの属性を一括して変更します(変更しない場合は対象すべての属性を列挙します)。
/D [Windows NT] 現在のディレクトリにあるサブディレクトリ自身の属性も一括して変更(または表示)します。/S オプションを付けた場合はさらにその中のサブディレクトリも対象になります。
/L [Windows NT] <file-name> がシンボリックリンク(ジャンクションポイント)である場合、そのリンク自身に対する属性を変更します。指定しなかった場合はリンク先ファイル/ディレクトリの属性の表示・変更が行われます。

解説

Attrib使用例

Attribについて

Attribでは、ファイルの属性のうち「読み取り専用」「アーカイブ」「システム ファイル」「隠しファイル」「非インデックス対象」(NTFSファイルシステム他)などの変更を行うことができます。これらの属性の有無により、一部コマンドやMS-DOS、Windows上でファイルの扱いが変わるものもあります。例えば「隠しファイル」属性のあるファイルはDirコマンドやエクスプローラー上(表示する設定をしていない場合)で非表示になります。

[Windows NT系/XP以降] NTFSファイルシステムなどのアクセス制御リスト(ACL)はAttribでは扱いません。アクセス制御リストの変更を行う場合はCaclsコマンドやIcalcsコマンドを使います。

※ Attribでは「圧縮ファイル属性」「暗号化ファイル属性」「一時ファイル属性」は変更できません。

OneDrive関連属性

[Windows 10 1709 以降] OneDriveの「ファイル オンデマンド機能」に合わせ、Attribでも「P」(Pinned属性)と「U」(Unpinned属性)が利用できるようになっています。これらは以下の対応となっています。

  • 「P」属性あり … 「このデバイス上で常に保持する」状態(エクスプローラーでは緑地に白色のチェックマークアイコン)
  • 「U」属性あり … 「空き容量を増やす」指定がある状態(エクスプローラーでは雲のアイコン)
  • 「P」「U」どちらもない … 「ローカルで利用可能」な状態(エクスプローラーでは白地に緑色のチェックマークアイコン)

※ 「P」と「U」同時に指定することはできません。

「U」属性がある場合は、ファイルのデータをダウンロードしていない状態を示し、オンライン状態でそのファイルを開こうとするとダウンロードが行われて「U」属性が外れます。「U」属性の付いたファイルはローカルにデータが無いため、オフライン状態ではファイル検索でデータの検索を行うことができず、データを読み取ろうとすると失敗します。

「U」属性がないファイルはデータがダウンロード済み(同期済み)であり、ローカルで利用可能な状態になっていることを示します。前述の通り、「U」属性のあるファイルをオンライン状態で開こうとするとデータのダウンロードが行われ、「U」属性が外れます。また、この状態のファイルはオンライン時に常にデータの同期が行われます。

「P」属性のあるファイルは「U」属性のないファイルと同様、ローカルにダウンロード済みで利用可能な状態になっていますが、それに加えて、「P」は「ピン留め」の意味を持っているため、常にローカルに保持されるようになります。これは、「P」属性のないファイルが必要に応じてディスク上のデータのみが消去されて「U」属性のファイルになる可能性がある、ということを示しています(ファイルそのものは削除されません)。そのため、常にローカルで利用できるようにしたい場合は「P」属性が付与される状態にしておくことが良いと考えられます。

※ 「必要に応じでデータのみが削除される」という処理は「ディスクの容量が少なくなってきたとき」に行われるようですが、実際にその処理が行われるかどうかは未確認です。詳細は「Files on demand - difference in 'locally available' and 'always available' files - Microsoft Community Hub」(英語)などをご確認ください。
※ データの読み取りを行わない場合でも、「U」属性を外したタイミングでデータのダウンロードが行われます。

なお、「ファイル オンデマンド機能」を有効にしていない場合は上記属性は無視され(指定することはできますが意味がありません)、オンライン状態であるときには常にファイル/フォルダーの同期が行われます。

サンプル1

attrib +R +H +S c:\command.com

c:\command.com に読み取り専用、隠しファイル、システム ファイルの属性を設定します (最も重要なファイルによく付けられます)。

サンプル2

attrib -H -S c:\hoge.foo

c:\hoge.foo から隠しファイル、システム ファイルの属性を削除します。DOS上/コマンドプロンプト上では隠しファイルやシステム ファイルを操作しようとすると「ファイルが見つかりません」となるので、操作するときは必ずこのコマンドが必要です。

サンプル3

attrib +A D:\MyDocs\*.* /S
attrib -A D:\MyDocs\*.bak /S
attrib -A D:\MyDocs\*.tmp /S
xcopy D:\MyDocs E:\Backup\MyDocs\ /E /M

「D:\MyDocs」内のすべてのファイルに「アーカイブ属性」を設定した後、拡張子が「bak」と「tmp」のファイルのみアーカイブ属性を外します。その上でXcopyプログラムを使いアーカイブ属性の付いたファイルすべてを「E:\Backup\MyDocs」内にコピーします。なお、Xcopyの/Mスイッチにより、コピーされたファイルのコピー元ファイルはアーカイブ属性が外れます(コピー先はそのまま)。

サンプル4

attrib -P +U P:\Data\Logs /S

[Windows 10 1709 以降] OneDriveで共有されたディレクトリ「P:\Data\Logs」とその中のファイルすべてをUnpinned属性とします。データがクラウド上にあり、ローカルで保持しておく必要がない場合にディスクの容量を節約する目的で指定します。

サンプル5

attrib +P -U P:\Data\Lists /S

[Windows 10 1709 以降] 上記とは逆に、OneDriveで共有されたディレクトリ「P:\Data\Lists」とその中のファイルすべてをPinned属性とします。ダウンロード済みのデータが自動的にUnpinned状態・データが利用できない状態にならないようにマークし、オフラインでも常に利用可能にする目的で指定します。例として、管理された複数のモバイルPCにOneDrive上の共有データをローカルに保持され続けるようにする(容量不足でも削除されないようにする)ために管理者が実行する、といったことが考えられます。

関連項目