PS>Convert-Path .\ D:\temp PS>Resolve-Path .\ Path ---- D:\temp |
これを見るとどちらもPathを解決してくれているが、Convert-Pathは文字列、Resolve-PathはPathInfoオブジェクトが返ってきている。
ワイルドカードも使える。
PS>cvpa *.tmp D:\temp\CR_5BC5.tmp D:\temp\GUR7F5C.tmp D:\temp\GUR99ED.tmp PS>rvpa *.tmp Path ---- D:\temp\CR_5BC5.tmp D:\temp\GUR7F5C.tmp D:\temp\GUR99ED.tmp |
違いが出るのはこんな時、
PS>Convert-Path HKLM:\software\microsoft HKEY_LOCAL_MACHINE\software\microsoft PS>Resolve-Path HKLM:\software\microsoft Path ---- HKLM:\software\microsoft |
Convert-Pathはドライブ表記から通常の表記に変換してくれる。
Split-Pathはパスを様々な場所で分割して取り出してくれる。
PS>rvpa *.tmp | Split-Path -parent D:\temp D:\temp D:\temp PS>rvpa *.tmp | Split-Path -leaf CR_5BC5.tmp GUR7F5C.tmp GUR99ED.tmp PS>rvpa *.tmp | Split-Path -Qualifier D: D: D: PS>rvpa *.tmp | Split-Path -NoQualifier \temp\CR_5BC5.tmp \temp\GUR7F5C.tmp \temp\GUR99ED.tmp |
parentがデフォルトのようだ。
Join-Pathはパスの連結。
PS>Join-Path -Path c:\windows\ -ChildPath \system32 c:\windows\system32 PS>Join-Path -Path c:\windows\ -ChildPath \system99 c:\windows\system99 |
\記号が重複してもよきに計らってくれる。
Resolveパラメータを付けると実存チェックをしてくれる。
PS>Join-Path -Path c:\windows\ -ChildPath \system32 -Resolve C:\windows\system32 PS>Join-Path -Path c:\windows\ -ChildPath \system99 -Resolve Join-Path : パス 'C:\windows\system99' が存在しないため検出できません。 発生場所 行:1 文字:10 + Join-Path <<<< -Path c:\windows\ -ChildPath \system99 -Resolve + CategoryInfo : ObjectNotFound: (C:\windows\system99:String) + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.Jo |
単純に実存チェックをするときにはTest-Pathを使う。
PS>Test-Path c:\windows\system32 True PS>Test-Path c:\windows\system99 False |
0 件のコメント:
コメントを投稿