是否有一种直接的方法(通过使用cmdlet或.NET类)来获取给定路径下子文件夹中文件的相对路径?
例如,当前文件夹是C:\MyScript
,有一个名为Data
的子文件夹,其中包含一个文件Test.txt
,所以我想看到的是Data\Test.txt
而不是C:\MyScript\Data\Test.txt
是否有一种直接的方法(通过使用cmdlet或.NET类)来获取给定路径下子文件夹中文件的相对路径?
例如,当前文件夹是C:\MyScript
,有一个名为Data
的子文件夹,其中包含一个文件Test.txt
,所以我想看到的是Data\Test.txt
而不是C:\MyScript\Data\Test.txt
Resolve-Path
命令有一个 -Relative
参数,可以返回相对于当前目录的路径:
Set-Location C:\MyScript
$relativePath = Get-Item Data\Test.txt | Resolve-Path -Relative
[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如果目录不存在,或者基础目录应该与当前工作目录不同,则有一个.NET方法[IO.Path] :: GetRelativePath(String from,String to)
。