windowsで、jpgやmp3を右クリ→プロパティ→詳細タブを見ると値が編集可能ないろんなプロパティがあります。
エクスプローラーを詳細表示にすればこれらのプロパティの値を表示してソートすることもできます。
しかし複数のファイルのプロパティの値を一つづつ編集するのは面倒です。
そんな時拙作propertyhellを使えば簡単です。
そしてpropertyhellがインストールされていればPowerShellからも編集・取得できます。
ここではPowerShellでプロパティの値を編集・取得する方法を説明します。
まず、プロパティの値の編集・取得に共通する準備をします。
準備
propertyhellのインストール後、propertyhellを1度も起動していない場合はpropertyhellを起動して指示に従ってコンピューターを再起動してください。
その後propertyhellのインストールフォルダ内の+フォルダ内にあるitemというファイルを開きます。
するとPowerShellのウィンドウと表のウィンドウが開きます。
PowerShellのウィンドウを選び、
Add-Type -literalpath 'Microsoft.WindowsAPICodePack.Shell.dll'
と入力します。
これでプロパティの値の編集・取得の準備は完了です。
次に、表のウィンドウの説明をします。
表のウィンドウの説明
Display name列が、ファイルを右クリ→プロパティ→詳細タブに表示されるプロパティ名です。
ただしDisplay name列が空白の行はCanonical name列が詳細タブに表示されるプロパティ名です。
プロパティを編集・取得する際に、そのプロパティのCanonical nameまたはCanonical name 2が必要です。
行を選択し、Ctrl+Cを押せば行の内容をコピーできます。
次にプロパティの値を編集する方法を説明します。
方法は2通りあります。
プロパティの値を編集する方法1
$gpw=[Microsoft.WindowsAPICodePack.Shell.ShellFile]::FromFilePath('ⅰ').Properties.GetPropertyWriter()
$gpw.WriteProperty('ⅱ', ⅲ)
$gpw.dispose()
以上のⅰをプロパティの値を編集するファイルのフルパスに書き換えます。
以上のⅱを編集したいプロパティのCanonical nameに書き換えます。
値を入力する場合は以上のⅲを入力する値に書き換えます。
値を削除する場合は以上のⅲを$nullに書き換えます。
書き換えた以上の文字列をPowerShellに入力します。
プロパティの値を編集する方法2
[Microsoft.WindowsAPICodePack.Shell.ShellFile]::FromFilePath('ⅰ').Properties.ⅱ.Value=ⅲ
以上のⅰをプロパティの値を編集するファイルのフルパスに書き換えます。
以上のⅱを、編集したいプロパティのCanonical name 2に書き換えます
(なおCanonical name 2が空白のプロパティはこの方法で編集できません)。
値を入力する場合は以上のⅲを入力する値に書き換えます。
値を削除する場合は以上のValue=ⅲをClearValue()に書き換えます。
書き換えた以上の文字列をPowerShellに入力します。
次にプロパティの値を取得する方法を説明します。
方法は2通りあります。
プロパティの値を取得する方法1
[Microsoft.WindowsAPICodePack.Shell.ShellFile]::FromFilePath('ⅰ').Properties.GetProperty('ⅱ').ⅲ
以上のⅰをプロパティの値を取得するファイルのフルパスに書き換えます。
以上のⅱを、取得したいプロパティのCanonical nameに書き換えます。
以上のⅲをValueまたはValueAsObjectに書き換えます。
書き換えた以上の文字列をPowerShellに入力します。
プロパティの値を取得する方法2
[Microsoft.WindowsAPICodePack.Shell.ShellFile]::FromFilePath('ⅰ').Properties.ⅱ.ⅲ
以上のⅰをプロパティの値を取得するファイルのフルパスに書き換えます。
以上のⅱを、取得したいプロパティのCanonical name 2に書き換えます
(なおCanonical name 2が空白のプロパティはこの方法で取得できません)。
以上のⅲをValueまたはValueAsObjectに書き換えます。
書き換えた以上の文字列をPowerShellに入力します。