$FolderPath = [Environment]::GetFolderPath("Recent");$wsh = New-Object -ComObject WScript.Shell;ls $FolderPath -File -Filter "*.lnk" | ? {$_.LastWriteTime -ge [DateTime](Get-Date).ToString("yyyy/MM/dd 00:00:00") } | % { $sc = $wsh.CreateShortcut($_); $sc.TargetPath }
そのフォルダのパスは
[Environment]::GetFolderPath("Recent")
で取得することが出来ます。また、日付を指定するため
Get-Date
で当日の日時→時刻を00:00:00にした文字列→DateTimeへキャストとかなり回りくどい手法を採用しています。現実的には日付文字列をDateTimeでキャストしてあげる使い方をすれば任意の日付で絞り込み条件を作ることが出来ます。次にショートカットファイルから元ファイルのパスを調べる方法としてWScript.Shellを利用します。既存の.lnkファイル(ショートカット)ファイルに対し
CreateShortcut()
と不穏なメソッドを実行していますが、このメソッドは既存のファイルを引数にするとショートカットファイルを読み込む振る舞いをしてくれます。読み込まれたショートカットオブジェクトのTargetPathプロパティを参照するとショートカットの元ファイルのパスを知ることが出来ます。以上
コメント