このページの本文へ

前へ 1 2 次へ

Windows Info 第487回

気づけば随分数が増えているWindowsのファイル属性

2025年06月22日 10時00分更新

文● 塩田紳二 編集● ASCII

  • この記事をはてなブックマークに追加
  • 本文印刷

ファイル属性を変更する方法

 現在のWindows 11でファイル属性を変更するには、いくつか方法がある。それぞれ設定が可能なファイル属性の種類が異なり、どれを使っても同じ結果が得られるとは限らない。

 ファイル属性を変更する方法には、以下の3つがある。

Set-ItemProperty、Get-ItemPropertyコマンド(PowerShell)
attrib.exe(cmd.exe)
エクスプローラー

 現在の標準コマンドライン・インタプリタであるWindows PowerShell(およびPowerShell)では、Set-ItemProperty、Get-ItemPropertyコマンドを使ってファイル属性を設定する。

 ただし、Set-ItemPropertyコマンドでは、先ほどの表のFileAttributes列にある5つのファイル属性(Archive、Hidden、Normal、ReadOnly、System)しか設定できない。

 基本的な構文は、

Set-ItemProperty -Name Attributes -Value "Hidden,System" -Path .\test.txt

である。-Valueオプションに文字列として4つの属性を指定する。複数指定したいときには、カンマでつなげる。

 ただし、Set-ItemPropertyは、ファイル属性を個別に指定してオフにすることができないため、ファイル属性がまったく指定されていない状態を表す「Normal」を使う。これですべての属性をオフにして、必要に応じて他の属性を設定する。このあたりを見るに、コマンドの設計を失敗している感じがある。後述するattrib.exeを使った方が簡単である。

 Get-ItemPropertyで対応外のファイル属性が含まれているとき、表示はファイル属性を数値で表示する。なお、表示だけなら、Get-ChildItem(エイリアスはdir)やGet-Itemコマンドでもできる。このコマンドで得られたFileInfoオブジェクトに対して、Attributesプロパティを表示させればよい。

 attrib.exe(https://learn.microsoft.com/ja-jp/windows-server/administration/windows-commands/attrib)は、MS-DOS時代からあるファイル属性を設定、表示するコマンドである。属性を変更する場合、属性を表すアルファベット1文字に「+」(オン、設定)、「-」(オフ、解除)を付けて、対象へのパスを記述する。

ATTRIB [+<属性文字> | -<属性文字>]……[パス] [/S [/D]] [/L]

 PowerShell内でも、属性の指定は、attribコマンドを使った方が便利だ。

 エクスプローラーは、簡易なファイル属性指定ができるが、前記2つのコマンドでは、設定できないOneDrive関連のファイル属性を右クリックメニューから指定できる。

 属性指定は、ファイルを選択しそのプロパティを開いてする。指定可能なのは「読み取り専用」「隠しファイル」「アーカイブ対象」「圧縮」「インデックス作成」「暗号化」の6つである。

ファイル属性

エクスプローラーでファイルを選び右クリックメニューからプロパティを表示させる。「全般」タブに「属性」があり、読み取り専用、隠しファイルの指定が可能。さらに詳細設定ボタンでアーカイブ属性、インデックス属性、圧縮、暗号化が指定できる

言語からファイル属性を扱う

 コンピュータ言語からファイル属性を扱うには、以下の2つのAPIがある。

Win32API:GetFileInformationByHandleEx、SetFileInformationByHandle
.NET:GetAttributes、SetAttributesメソッド(System.IO.Fileクラス)

 これらは、なんらかのコンピュータ言語から呼び出す必要があるが、言語によっては、コマンドラインから呼び出すことも可能だ。たとえば、.NETのGetAttributes、SetAttributesメソッドは、コマンドラインでPowerShellから呼び出すことができる。

 たとえば、

[System.IO.File]::SetAttributes(<フルパス>,
    ([System.IO.FileAttributes]::ReadOnly -bor [System.IO.FileAttributes]::Hidden ))

とする。「[System.IO.FileAttributes]」に関しては冒頭の表を参照してほしい。APIを使うメリットは、コマンドやGUIでは扱えないファイル属性を利用できる点にある。

 ファイル属性は、読み取り専用や隠しファイルといった簡単なものだけで使われていたが、OneDriveの導入などで多数のファイル属性が導入されて、数が増えている。

前へ 1 2 次へ

カテゴリートップへ

この連載の記事

ASCII倶楽部

注目ニュース

  • 角川アスキー総合研究所

プレミアム実機レビュー

ピックアップ

デジタル用語辞典

ASCII.jpメール デジタルMac/iPodマガジン