我有一堆目录名和文件名,有些是绝对路径,有些是相对路径。我只想获得每条路径的两个主要部分。输入:
int
我希望得到:
D:\a\b\c\d.txt\
c:\a
\my\desk\n.txt
you\their\mine
PowerShell有一种方便的方法来实现这一目标吗?
答案 0 :(得分:4)
你有时可以用手拍打建议字符串操作,因为它有时可能不可靠"。但是,您的测试数据包含3种不同的可能此外,从未见过有人从路径中寻找第一部分 s 。
我提出了一个简单的解决方案,你可以在你的问题中获得所需的输出
"D:\a\b\c\d.txt\","c:\a","\my\desk\n.txt","you\their\mine" | ForEach-Object{
($_ -split "(?<=\S)\\")[0..1] -join "\"
}
我需要使用lookbehind,因为您的示例输出包含一个领先的想要保留的前导斜杠。它将每个字符串拆分为在其前面具有非空白字符的斜杠。
这不会为UNC返回正确的路径。如果您只想要路径的一部分,那么Split-Path
将是显而易见的选择。我想你可以嵌入调用来获得2但是在这个时候我无法找到一个简单的方法来解释所有具有相同逻辑的例子。