我希望这个小的powershell one liner能够回显foo.txt的完整路径,其中目录是我当前的目录。
[System.IO.Path]::GetFullPath(".\foo.txt")
但事实并非如此。它打印......
C:\Documents and Settings\Administrator\foo.txt
我不在$ home目录中。为什么要在那里解决?
答案 0 :(得分:17)
[System.IO.Path]
正在使用shell进程的当前目录。您可以使用Resolve-Path
cmdlet获取绝对路径:
Resolve-Path .\foo.txt
答案 1 :(得分:12)
根据GetFullPath的文档,它使用当前工作目录来解析绝对路径。 powershell当前工作目录与当前位置不同:
PS C:\> [System.IO.Directory]::GetCurrentDirectory()
C:\Documents and Settings\user
PS C:\> get-location
Path
----
C:\
我想你可以使用SetCurrentDirectory让它们匹配:
PS C:\> [System.IO.Directory]::SetCurrentDirectory($(get-location))
PS C:\> [System.IO.Path]::GetFullPath(".\foo.txt")
C:\foo.txt