【发布时间】:2014-08-05 01:19:41
【问题描述】:
我正在尝试比较两个 csv 文件,每列一列,一列带有数字 (4590987),一列带有数字扩展名 (4590987.htm)。我想找到所有匹配项,并将它们写入另一个 csv 文件,这样我就可以使用它来将文件从文件夹中取出并将它们复制到 另一个文件夹进行进一步处理。我对带有标题的 csv 文件进行了排序,但无法弄清楚如何比较和写出结果。或者将数字列表与文件夹的内容进行比较,然后将这些文件复制出来。唯一的问题是我的列表大约有 3000 行,目录中有大约 45000 个文件,所以我担心这可能需要一段时间。
$csv1 = Import-Csv $readfilebasesorted1
$csv2 = Import-Csv $readlistsorted1
$hash = @{}
$match = "^\d{7}"
$funmatch = ([regex]::matches($csv1, $match))
foreach ($line in $funmatch){
foreach ($lines in $csv2){
if ($line -match $lines){
$hash += $line
$hash = Write-Output $result
}
}
}
新代码,希望格式更好。
$a = Import-CSV "C:\read\20140630.csv" - header("ProID","EventDate","EventType","EventNotes")
$scrdir = '\\pl1\Prolaw\gwdocs\4754-66921'
$sortedlist = 'C:\ProLaw\sortedlist.csv'
$docs = 'C:\ProLaw\Docs'
# Sort
$sort = $a | Sort-Object ProID | Export-Csv $sortedlist -NoTypeInformation
$listtomove = Import-Csv $sortedlist
$scrdir = '\\pl1\Prolaw\gwdocs\4754-66921'
GCI $scrdir | ?{$listtomove.ProID -contains $_.BaseName} | Select -Expand FullName | Copy-Item -Destination $docs
【问题讨论】:
-
你的标题是什么?您不会在代码中显示它们。有了这些,我会给你一个答案。
-
查看
Compare-Objectcmdlet。
标签: powershell