Powershell 将文件从CSV复制到多个位置

Powershell 将文件从CSV复制到多个位置,powershell,powershell-2.0,Powershell,Powershell 2.0,我目前正在扫描一个目录并匹配文件名,然后根据csv文件将它们复制到不同的文件共享位置。CSV文件应该有两个字段:目标列=副本的路径,字符串Find column=标识要复制的文件 我的CSV文件如下所示: "matching file names" , "Destination" "Don" , "c:\test\a" "Quest" , "c:\test\b" 首先,CSV中没有“查找”列。我假设您标题为“匹配文件名”的列的标题实际上是“查找” 您的问题

我目前正在扫描一个目录并匹配文件名,然后根据csv文件将它们复制到不同的文件共享位置。CSV文件应该有两个字段:目标列=副本的路径,字符串Find column=标识要复制的文件

我的CSV文件如下所示:

"matching file names" , "Destination" "Don" , "c:\test\a" "Quest" , "c:\test\b"
首先,CSV中没有“查找”列。我假设您标题为“匹配文件名”的列的标题实际上是“查找”

您的问题是由代码中嵌套的双循环引起的。迭代每个模式,然后使用最内层循环将与给定模式匹配的所有文件从CSV复制到每个目标

对CSV数据只使用一个循环(保持过滤器字符串和目标路径之间的关联完好无损),问题就会消失。我还建议使用
Contains()
方法,而不是像
那样的
操作符,这样就不需要向筛选器字符串添加通配符

Get ChildItem$filepath | ForEach对象{
foreach($csv中的过滤器){
if($f.Name.Contains($filter.find)){
复制项目$\ FullName$filter.Destination
}
}
}