获取当前目录下子文件夹中文件的相对路径

76

是否有一种直接的方法(通过使用cmdlet或.NET类)来获取给定路径下子文件夹中文件的相对路径?

例如,当前文件夹是C:\MyScript,有一个名为Data的子文件夹,其中包含一个文件Test.txt,所以我想看到的是Data\Test.txt而不是C:\MyScript\Data\Test.txt


我猜这就是你想要的 - https://dev59.com/7nRB5IYBdhLWcg3w1Kn0#499101 - Angshuman Agarwal
相关链接:https://dev59.com/OcTsa4cB1Zd3GeqPA55b - zett42
2个回答

134

Resolve-Path 命令有一个 -Relative 参数,可以返回相对于当前目录的路径:

Set-Location C:\MyScript
$relativePath = Get-Item Data\Test.txt | Resolve-Path -Relative

3
可以定义一个与当前目录不同的基础目录吗? - VinyJones
7
我还没有找到一种方法,但我使用Push-Location和Pop-Location作为一种解决方法,临时将当前目录设置为其他基础目录,以便获得相对于该目录的路径。有点笨拙,但对我有效。 - Joe Savage
3
@VinyJones 是的,如果使用 .net core/.net standard,您可以使用以下 .net 方法:[System.IO.Path]::GetRelativePath('c:\temp', 'c:\windows')https://learn.microsoft.com/en-us/dotnet/api/system.io.path.getrelativepath?view=net-6.0&viewFallbackFrom=netframework-2.0。对于 .net framework,您需要自己编写代码,请参见 https://dev59.com/y3VC5IYBdhLWcg3wfxM8。 - JohnLBevan

5

如果目录不存在,或者基础目录应该与当前工作目录不同,则有一个.NET方法[IO.Path] :: GetRelativePath(String from,String to)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接