我正在做一些涉及一些自动文件移动的工作,这些文件包含必须维护的相对路径。不幸的是,我发现System.IO.Path,System.String和Powershell运算符提供的功能有些不足,无法正常处理我的工作。
对我来说非常有用的一个功能是路径减法的概念,它在理论上像减 vector 一样有效。从概念上讲,AB为您提供了从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 - Powershell中的路径和字符串斩波,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4938759/