我只需要从文件路径中获取最近的子目录和文件名,如下所示。
前任:-
(1)E:\Dump\DumpText-1.txt - Dump\DumpText-1.txt
(2)E:\Dump\SubDump1\DumpText-1.txt - SubDump1\DumpText-1.txt
(3)E:\Dump\SubDump3\Sub_SubDump1\DumpText-1.txt -Sub_SubDump1\DumpText-1.txt
我的 PowerShell 脚本如下:
Get-ChildItem $directoryPath -Recurse | ForEach-Object -Process {if (!$_.PSIsContainer) {$_.FullName; $_.FullName -replace "^.*?\\"; " "}}
答案1
您可以使用对象的 Directory 属性:
Get-ChildItem $directoryPath -Recurse -File | ForEach-Object {
"$($_.FullName) - $($_.Directory.Name)\$($_.Name)"
}
只需使用目录对象的名称,然后使用文件的名称。
答案2
在我看来,最简单的方法是用反斜杠分割字符串:
$splitString = "E:\Dump\SubDump3\Sub_SubDump1\DumpText-1.txt" -split "\\"
(因为反斜杠是转义字符,所以必须用第二个反斜杠进行转义)。
$splitString
$splitString[-1]
现在是反斜杠之间的所有部分的数组。现在您可以通过(文件名)和$splitString[-2]
(直接父文件夹的名称)访问此数组的最后一个部分和倒数第二个部分。