我有一个文件名列表&文本文件中的单独文件位置,我想读入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
相同级别的文件夹。 folder2
。 image1.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
变量。
答案 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. ".."
}