【发布时间】:2011-06-23 18:01:19
【问题描述】:
我正在做一些涉及自动文件移动的工作,这些文件包含必须维护的相对路径。不幸的是,我发现 System.IO.Path、System.String 和 Powershell 的操作员提供的设施有点缺乏优雅地处理我的工作的能力。
对我来说非常有用的一个功能是路径减法的概念,它在理论上可以像减法向量一样工作。从概念上讲,A - B 为您提供了从 B 到 A 的路径。在应用程序到路径中,D:\A\B\C\D - D:\A\B\ = \C\D。同样,D:\A\B\ - D:\A\B\C\D = \..\.. 在这种情况下。我现在可以接受,只有当一条路径完全包含在另一条路径中时,这才有意义。
这似乎包括两个步骤:1) 确定一条路径包含在另一条路径中。 2)从包含路径中删除包含路径。 3) 或者,根据操作的侧向性,将文件夹名称替换为父 .. 符号。
因为我关心的是 NTFS,所以我需要包含和替换操作都是不区分大小写的。对于遏制,我可以使用选择字符串,因为它不区分大小写,并允许使用 -simple 开关,它允许我使用路径而无需将其分开来为正则表达式转义它们。
不过,从另一个字符串中删除字符串有点烦人。 System.IO.Path 对此无能为力,System.String 的相关方法都是区分大小写的,powershell 的运算符都需要按摩,以便正则表达式匹配。
所有这一切似乎比它应该做的更多——我缺少什么工具可以更好地处理这个问题吗?
【问题讨论】:
标签: regex string powershell path case-sensitive