如何在powershell中打印目录路径的特定部分

mrwjdhj3  于 2023-02-19  发布在  Shell
关注(0)|答案(2)|浏览(180)

我的脚本在文件上循环运行,我显示每个文件的路径,但路径太长,我想只显示相关的目录。路径构建总是相同的输出路径的示例:

$File.DirectoryName
C:\Users\Bandit\AppData\Local\Temp\9c86ee608bb9477ebb11914c36a5a76d\638110173610123239\IDUDatabase_4.0.0.119\IDUDatabase

我正在创建临时文件夹和子文件夹,如下所示:

$tempFolder = Join-Path ([IO.Path]::GetTempPath()) (New-GUID).ToString('n')
$subTemp = Join-Path -Path $tempFolder -ChildPath ([datetime]::Now.Ticks)

这部分是常数C:\Users\Bandit\AppData\Local\Temp\9c86ee608bb9477ebb11914c36a5a76d\638110173610123239
我只想显示“IDUDatabase_4.0.0.119\IDUDatabase”除了用户名(C:\User\UserName)之外,结构始终相同

pod7payv

pod7payv1#

您可以为此使用Resolve-Path-Relative参数:

Set-Location $subtemp
GCI $subtemp -Recurse |Foreach-Object { Resolve-Path -Relative $_.FullName }

.\IDUDatabase_4.0.0.119
.\New folder
.\IDUDatabase_4.0.0.119\IDUDatabase
.\New folder\New Text Document.txt
t3irkdon

t3irkdon2#

如果要从字符串中删除前缀,可以使用Substring方法...

$subTemp = "C:\Users\Bandit\AppData\Local\Temp\9c86ee608bb9477ebb11914c36a5a76d\638110173610123239"

$mypath = Join-Path -Path $subTemp -ChildPath "IDUDatabase_4.0.0.119\IDUDatabase"

$displayPath = $mypath.Substring($subTemp.Length+1)

$displayPath
# IDUDatabase_4.0.0.119/IDUDatabase

注意,+1用于删除文件夹前缀后面的路径分隔符。

相关问题