Powershell - 在2个不同的分隔符上分割字符串

时间:2014-07-09 20:27:10

标签: string powershell split directory

我有一个文件名列表&文本文件中的单独文件位置,我想读入Powershell。输入文件中有2列用逗号分隔。第一列给出了文件共享的全名,包括文件名&第二列中包含图像文件的部分路径。例如:

\\myshare\backup\work\folder1\file1.txt,..\image\image1.tif
\\myshare\backup\work\folder2\file2.txt,..\image\image2.tif
\\myshare\backup\work\folder2\file2a.txt,\image\image3.tif

区别在于图像文件夹前面..的项目与file_.txt所在的位置相关。在上面的例子中 -

\\myshare\backup\work\image

将是与folder1相同级别的文件夹。 folder2image1.tif和& image2.tif将位于上述文件夹中。没有前面的..的那个将是文件所在文件夹的子文件夹。文件image3.tif将在此文件夹中:

\\myshare\backup\work\folder2\image\image3.tif

我正在阅读文本文件,如下所示:

Get-Content "C:\Users\username\Documents\workfile.txt" | foreach {
$fn, $location = $_.Split(',')
}

它可以分割它,但我需要在斜杠($location)上再次分割\变量。如果它有..我会做一件事,如果没有,我想做一些不同的事情。

如何在已分割字符串的foreach循环内第二次(在另一个字符上)拆分字符串?我尝试了几个不同的东西,但每个都给出了一条错误信息并且没有运行。一条消息是“表达式只允许作为管道的第一个元素。”如果我再次尝试将其拆分(在另一个foreach循环内),则会丢失$fn和&中的值。 $location变量。

1 个答案:

答案 0 :(得分:0)

你应该能够再次使用'split'运算符,这次是在foreach循环内的$ location字符串中,将$ location字符串的每个'part'拆分成一个数组。然后,您可以检查数组的元素零,以查看它是否包含“..”,如下所示:

Get-Content "C:\Users\username\Documents\workfile.txt" | foreach {
  $fn, $location = $_.Split(',')
  $locationparts= $location -split "\"
  #$locationparts[0] is now the first part of the location string, e.g. ".." 
}