属性の解除はGetAttr関数とSetAttr関数を使って行う

ファイルやフォルダの属性はSetAttr関数で設定することが出来ますが、SetAttr関数は解除も行うことが出来ます。正確には解除というよりも属性を新しく付け直すことになります。

実際のプログラムでは一律に新しい属性を付けるというよりも、元の属性の一部を解除する形になることの方が多いと思われます。その場合、事前に元の属性がなんなのかをGetAttr関数で調べておく必要があります。

以下では元の属性のうち、一部の属性のみを解除する方法を紹介します。

なお、GetAttr関数とSetAttr関数については以下をご参照ください。

ファイルやフォルダの属性を調べる(GetAttr)
ファイルやフォルダの属性を設定する(SetAttr)

属性を解除する手順

一部の属性を解除する場合の手順は以下のようになります。

  1. 現在の属性を取得する。
  2. 現在の属性に解除したい属性が含まれているか確認する
  3. 含まれている場合はXor演算子で解除する
  4. 解除後の属性をSetAttr関数で再設定する

以下にこの手順のコードを紹介します。

属性を解除するサンプルコード

上の手順の通りのコードです。

解除したい属性が1つの場合と複数の場合はコードが異なります。

1つの属性を解除するサンプル

11行目で解除したい属性が含まれているか確認し、13行目でそれを除去しています。

 

複数の属性を解除するサンプル

ほとんど上のコードと同じですが、11行目の解除したい複数の属性が括弧で囲まれていることと、13行目でXor演算子で解除する全ての属性を指定されている点が異なります。