如何简单地提取路径的前 N 部分?
How to simply extract leading N parts of a path?
我有一堆目录名和文件名,有的是绝对路径,有的是相对路径。我只想获得每条路径的 2 个主要部分。输入:
D:\a\b\c\d.txt\
c:\a
\my\desk\n.txt
you\their\mine
我希望得到:
D:\a
c:\a
\my\desk
you\their
PowerShell 中有实现此目的的简便方法吗?
有时您可能会因为建议字符串操作而遭到掌掴,因为有时 "unreliable"。但是,您的测试数据包含 3 种不同的可能性。此外,从未见过有人从路径中寻找第一部分s。
我提出了一个简单的解决方案,可以得到您在问题中想要的输出
"D:\a\b\c\d.txt\","c:\a","\my\desk\n.txt","you\their\mine" | ForEach-Object{
($_ -split "(?<=\S)\")[0..1] -join "\"
}
我需要使用回顾,因为您的示例输出包含您想要保留的前导斜杠。它将每个字符串拆分为前面有非白色-space 字符的斜杠。
这不是 return UNC 的正确路径。如果您只想要路径的一部分,Split-Path
将是显而易见的选择。我想你可以嵌套调用 get 2 但此时我无法找到一种简单的方法来用相同的逻辑来解释你的所有示例。
我有一堆目录名和文件名,有的是绝对路径,有的是相对路径。我只想获得每条路径的 2 个主要部分。输入:
D:\a\b\c\d.txt\
c:\a
\my\desk\n.txt
you\their\mine
我希望得到:
D:\a
c:\a
\my\desk
you\their
PowerShell 中有实现此目的的简便方法吗?
有时您可能会因为建议字符串操作而遭到掌掴,因为有时 "unreliable"。但是,您的测试数据包含 3 种不同的可能性。此外,从未见过有人从路径中寻找第一部分s。
我提出了一个简单的解决方案,可以得到您在问题中想要的输出
"D:\a\b\c\d.txt\","c:\a","\my\desk\n.txt","you\their\mine" | ForEach-Object{
($_ -split "(?<=\S)\")[0..1] -join "\"
}
我需要使用回顾,因为您的示例输出包含您想要保留的前导斜杠。它将每个字符串拆分为前面有非白色-space 字符的斜杠。
这不是 return UNC 的正确路径。如果您只想要路径的一部分,Split-Path
将是显而易见的选择。我想你可以嵌套调用 get 2 但此时我无法找到一种简单的方法来用相同的逻辑来解释你的所有示例。