所以我有一个csv,例如:
Source
C:\Users\barcalac\Desktop\SOURCE\Finance
C:\Users\barcalac\Desktop\SOURCE\Finance\BMc's Files
C:\Users\barcalac\Desktop\SOURCE\Finance\BMc's Files\2001 Files
C:\Users\barcalac\Desktop\SOURCE\Finance\BMc's Files\2001 Files\Misc
C:\Users\barcalac\Desktop\SOURCE\Finance\BMc's Files\2001 Files\Misc\Doc1.docx
C:\Users\barcalac\Desktop\SOURCE\Finance\BMc's Files\2001 Files\Misc\Doc2.docx
C:\Users\barcalac\Desktop\SOURCE\Finance\BMc's Files\2001 Files\Misc\Doc3.docx
C:\Users\barcalac\Desktop\SOURCE\Finance\BMc's Files\2001 Files\Misc\Doc4.docx
C:\Users\barcalac\Desktop\SOURCE\Finance\BMc's Files\2001 Files\Misc\Doc5.docx
当尝试使用任何复制命令进行复制时,它当然是逐行进行并将每个路径/文件复制到新目录。我的问题是如何使其足够聪明,仅复制顶层文件夹,并跳过该顶层文件夹下方各行中的文件夹/文件。
上面的示例应该重新创建
c:\users\barcalac\desktop\source\finance
到
d:\users\barcalac\desktop\target\finance
没有将所有行一一复制,从而创建了Finance文件夹中已有内容的副本。
答案 0 :(得分:0)
假定您要递归复制每个路径。
我敢肯定,可以用一种更聪明的方式来做到这一点,但这应该可行。
要删除文档中任何其他路径中包含的路径,我将执行以下操作
$a=@"
C:\Users\barcalac\Desktop\SOURCE\Finance
C:\Users\barcalac\Desktop\SOURCE\Finance\BMc's Files
C:\Users\barcalac\Desktop\SOURCE\Finance\BMc's Files\2001 Files
C:\Users\barcalac\Desktop\SOURCE\Finance\BMc's Files\2001 Files\Misc
C:\Users\barcalac\Desktop\SOURCE\Finance\BMc's Files\2001 Files\Misc\Doc1.docx
C:\users\fayo\1
c:\users\fayo\2
c:\users\fayo\2\doc.doc
"@|ConvertFrom-csv -Header path
foreach ($i in (0..($a.count-1)))
{
foreach ($j in (0..($a.count-1))) {
if ($a[$j].path -like "$($a[$i].path)*")
{$a[$j]=$a[$i]}
}
}
$a|select -Unique -Property path
以上结果为
path
----
C:\Users\barcalac\Desktop\SOURCE\Finance
C:\users\fayo\1
c:\users\fayo\2