短いファイル名を取得するには、kernel32.dllのGetShortPathNameメソッドを呼べばわかるんだけど、それをPowerShellからやると面倒そうなので、Scripting.FileSystemObjectを利用してみる。
ここでは、Excelの実行ファイルを取得してみる。
> $fso = New-Object -comObject Scripting.FileSystemObject
> $fso.GetFile("C:\Program Files\Microsoft Office\Office12\EXCEL.EXE")
Path : C:\Program Files\Microsoft Office\Office12\EXCEL.EXE
Name : EXCEL.EXE
ShortPath : C:\PROGRA~1\MICROS~2\Office12\EXCEL.EXE
ShortName : EXCEL.EXE
Drive : System.__ComObject
ParentFolder : System.__ComObject
Attributes : 32
DateCreated : 2009/05/04 8:40:04
DateLastModified : 2009/05/04 8:40:04
DateLastAccessed : 2009/06/11 7:18:21
Size : 18333536
Type : アプリケーション
> ($fso.GetFile("C:\Program Files\Microsoft Office\Office12\EXCEL.EXE")).ShortPath
C:\PROGRA~1\MICROS~2\Office12\EXCEL.EXE
短いファイル名を取得したかった理由はレジストリに設定するためだったのでこれで十分いけそうだ。
登録:
コメントの投稿 (Atom)
0 コメント:
コメントを投稿