Jus*_*ing 4 powershell cmdlets
如果$文件名存在,那么该cmdlet相当于[System.IO.Path]::GetFullPath($fileName);是(Get-Item $fileName).FullName.但是,如果路径不存在,则抛出异常.他们的另一个cmdlet我不见了?
Join-Path 是不可接受的,因为它在传递绝对路径时不起作用:
C:\Users\zippy\Documents\deleteme> join-path $pwd 'c:\config.sys'
C:\Users\zippy\Documents\deleteme\c:\config.sys
C:\Users\zippy\Documents\deleteme>
Run Code Online (Sandbox Code Playgroud)
Join-Path这是我相信的不存在项目的路径.像这样的东西:
join-path $pwd $filename
Run Code Online (Sandbox Code Playgroud)
更新:
我不明白为什么你不想使用.Net"代码".Powershell基于.Net.所有cmdlet都是.Net代码.只有正确的理由才能避免使用.Net Code,当前目录是Powershell启动的目录,而不是$pwd
我只是列出了我认为可以这样做的方式,以便您可以处理绝对和相关的路径.它们似乎都不比那个简单GetFullPath():
$ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($filename)
Run Code Online (Sandbox Code Playgroud)
如果您担心绝对路径是否通过,您可以执行以下操作:
if(Split-Path $filename -IsAbsolute){
$filename
}
else{
join-path $pwd $filename # or join-path $pwd (Split-Path -Leaf $filename)
}
Run Code Online (Sandbox Code Playgroud)
这是丑陋的
$item = Get-Item $filename -ea silentlycontinue
if (!$item) {
$error[0].targetobject
} else{
$item.fullname
}
Run Code Online (Sandbox Code Playgroud)
类似的问题,有类似的答案:Powershell:解决可能不存在的路径?
| 归档时间: |
|
| 查看次数: |
11046 次 |
| 最近记录: |