2024年3月
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29    
無料ブログはココログ

 

« 株:現物買い約定(シチズンホールディングス:NISA枠) | トップページ | 覚書:PowerShellの配列を舐めるループについて »

2015年8月 4日 (火)

PowerShellでの奇妙な振る舞い

PowerShell というより、Shellオブジェクト(Folderオブジェクト?)というべきなのかしらん。
Zipに格納されたファイル名を取得するのにNameプロパティを使っているPowerShellプログラムで、環境によって拡張子があったり、なかったりすると、相談された。
ふと、思いついてExplorerのフォルダオプションにある、拡張子の表示のON/OFFを切り替えてみたら、そのON/OFFに合わせてNameプロパティに拡張子が出力されたりされなかったのが同期した。(PowerShellコンソールを閉じなくてもOK)
以下のようになる。

PS C:\Windows> $shell = New-Object -ComObject Shell.Application
PS C:\Windows> $shell.NameSpace("D:\temp\a.zip").Items() | ForEach-Object { $_.Name }
a.wav
PS C:\Windows> $shell.NameSpace("D:\temp\a.zip").Items() | ForEach-Object { $_.Name }
a

Nameプロパティは使っちゃだめだ・・・。
Pathプロパティのフルパスから、Split-Path <ファイル名> -Leaf でファイル名を取得する方向が安定と思われる。

« 株:現物買い約定(シチズンホールディングス:NISA枠) | トップページ | 覚書:PowerShellの配列を舐めるループについて »

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: PowerShellでの奇妙な振る舞い:

« 株:現物買い約定(シチズンホールディングス:NISA枠) | トップページ | 覚書:PowerShellの配列を舐めるループについて »