7cc@はてなブログ

JavaScriptとかとか

PowerShellでファイル属性操作

  • 「読み取り専用」や「隠しファイル」の設定
  • Set-ItemProperty は使わないほうが楽
  • 属性の実体は数値。ビット演算で求める
    • 文字でキャストする方法もある
  • attrib.exe を使ったほうが簡単

属性の取得

$item = gi .\file.txt
$item.Attributes      # Archive
[int]$item.Attributes #32

属性の設定

入力補完が効くけど長い

$item.Attributes = [System.IO.FileAttributes]::Hidden -bor [System.IO.FileAttributes]::Archive

短いけど入力補完が無い

$item.Attributes = "Hidden, System, Archive"
$item.Attributes = @("Hidden", "System", "Archive")

属性の追加と削除

bor/bxor = binary + or/xor でビット演算

Hiddenを追加

$item.Attributes = $item.Attributes, "Hidden"
$item.Attributes = $item.Attributes -bor "Hidden"
$item.Attributes = $item.Attributes -bor [System.IO.FileAttributes]::Hidden

Hiddenを削除

$item.Attributes = $item.Attributes -bxor "Hidden"