gpt4 book ai didi

powershell - 是否有等效于 [System.IO.Path]::GetFullPath($fileName); 的 powershell cmdlet?当 $fileName 不存在时?

转载 作者:行者123 更新时间:2023-12-03 16:40:38 29 4
gpt4 key购买 nike

如果 $fileName 存在,则等效于 [System.IO.Path]::GetFullPath($fileName); 的 cmdlet是 (Get-Item $fileName).FullName .但是,如果路径不存在,则会引发异常。他们的另一个 cmdlet 是我遗漏的吗?

Join-Path 是 Not Acceptable ,因为它在传递绝对路径时不起作用:

C:\Users\zippy\Documents\deleteme> join-path $pwd 'c:\config.sys'
C:\Users\zippy\Documents\deleteme\c:\config.sys
C:\Users\zippy\Documents\deleteme>

最佳答案

Join-Path将是为我认为不存在的项目获取路径的方法。像这样的东西:

join-path $pwd $filename

更新:

我不明白你为什么不想使用 .Net“代码”。 Powershell 是基于 .Net 的。所有 cmdlet 都是 .Net 代码。避免它的唯一正当理由是,当您使用 .Net Code 时,当前目录是启动 Powershell 的目录,而不是 $pwd
我只是列出了我认为可以完成的方法,以便您可以处理绝对路径和相关路径。没有一个比 GetFullPath() 更简单一:
$ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($filename)

如果您担心是否通过绝对路径,您可以执行以下操作:
if(Split-Path $filename -IsAbsolute){
$filename
}
else{
join-path $pwd $filename # or join-path $pwd (Split-Path -Leaf $filename)
}

这是丑的
 $item = Get-Item $filename -ea silentlycontinue
if (!$item) {
$error[0].targetobject
} else{
$item.fullname
}

类似的问题,有类似的答案: Powershell: resolve path that might not exist?

关于powershell - 是否有等效于 [System.IO.Path]::GetFullPath($fileName); 的 powershell cmdlet?当 $fileName 不存在时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7168566/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com