初版の事象により、Windows のゴミ箱内にあるファイルの一覧を取得したいのだが、
ゴミ箱内のファイルは、ファイル名がランダム化されてる事に加えて、
ゴミ箱を直接見た際に確認出来る元の場所と削除日時等の属性がは bash や PowerShell から ls しただけでは確認出来ない。
「Windows ゴミ箱 ファイル一覧」でググってみたところ以下のページを見つけた。
どううも属性を得るには COM 叩かないといけないらしい。
以下の VBS が参考になりそうとの事
試してみたがなんか上手く動かないがとりあえずこれを参考に、Copilot らから助言も得ながら PowerShell に落とし込んでみた。
上記 VBS では削除日時を
仕方ないので「extendedproperty trush windows deleted date」でググってみたところ
これも取れなかったんだけど、$item.ExtendedProperty("DateDeleted") を試してみると UTC の日時が取得可能だった。
あと、$item.IsFolder が地味に罠だったというか、.zip 等の explorer.exe で開けるアーカイブも True 扱いされてしまう。
中身のファイル一覧はフォルダ同様で PowerShell からも取得できるのだが、
$file に $null 与え解けば項目名が得られるので、
多少手間かければ取れないわけではなさそうな感じ。
まぁ、取れれば取れたでそれはそれで便利かもしれないのだが、
ちょっとそこまでする元気なかったので、とりあえず今回は ignore しといた。
ゴミ箱内のファイルは、ファイル名がランダム化されてる事に加えて、
ゴミ箱を直接見た際に確認出来る元の場所と削除日時等の属性がは bash や PowerShell から ls しただけでは確認出来ない。
「Windows ゴミ箱 ファイル一覧」でググってみたところ以下のページを見つけた。
- 教えて!goo / 2007-06-28 : WINDOWS CMDからゴミ箱のファイル一覧を表示したいのですが
どううも属性を得るには COM 叩かないといけないらしい。
以下の VBS が参考になりそうとの事
- Vector / 吉岡 照雄 / RecycleBin.VBS
試してみたがなんか上手く動かないがとりあえずこれを参考に、Copilot らから助言も得ながら PowerShell に落とし込んでみた。
上記 VBS では削除日時を
$parent.GetDetailsOf($file, 2)から取ってるが、これ秒が取れなくて分単位になってる事に加えて、なぜか U+200E LEFT-TO-RIGHT MARK と U+200F RIGHT-TO-LEFT MARK が変なところに入る。
仕方ないので「extendedproperty trush windows deleted date」でググってみたところ
- stackoverflow / 2014-01-06: How to retrieve the 'Deletion Date' property of an Item stored in the Recycle Bin using Windows API Code Pack?
$item.Properties.GetProperty("DateDeleted")みたいなこと書かれていた。
これも取れなかったんだけど、$item.ExtendedProperty("DateDeleted") を試してみると UTC の日時が取得可能だった。
あと、$item.IsFolder が地味に罠だったというか、.zip 等の explorer.exe で開けるアーカイブも True 扱いされてしまう。
中身のファイル一覧はフォルダ同様で PowerShell からも取得できるのだが、
$parent.GetDetailsOf($file, x)で取れる項目が違ってる。
$file に $null 与え解けば項目名が得られるので、
多少手間かければ取れないわけではなさそうな感じ。
まぁ、取れれば取れたでそれはそれで便利かもしれないのだが、
ちょっとそこまでする元気なかったので、とりあえず今回は ignore しといた。
とりあえず、以下の成果物をこさえた。
タグ
コメントをかく