2016-11-27 20 views
0

この検索を高速化するのには誰が助けますか?このコードで検索に数日かかります。 Search_Names.csv(約10K名) Need_This_Long_Strings.csv(約180Kの文字列と、それは50メガバイトです)PowerShellスクリプトで検索を高速化する必要があります

$TimeStamp = Get-Date -Format {yyyy.MM.dd_hh.mm.ss} 
$SearchNames = gc D:\Search_Names.csv 
$WhereSearch = gc D:\Need_This_Long_Strings.csv 
$Val = 0 

foreach ($SearchName in $SearchNames) 
{ 
     $WhereSearch | Where{$_ | Select-String -Pattern "$SearchName.*"} | Out-File D:\Find_in_Search_File_$TimeStamp.log -Append 
     $Val = $Val + 1 
} 
"Count of matches - $Val" |Out-File D:\Find_in_Search_File_$TimeStamp.log -Append 

答えて

0

私は解決策を自分自身を発見しました。 データ(Need_This_Long_Strings.csv)を配列にしました。 このコードの検索には約20分かかります。

$TimeStamp = Get-Date -Format {yyyy.MM.dd_hh.mm.ss} 
$SearchNames = Get-Content D:\Search_Names.csv 
$WhereSearch = Import-Csv D:\Need_This_Long_Strings.csv -Delimiter ";" 
$SearchArray = New-Object System.Collections.ArrayList($null) 
$SearchArray.AddRange($WhereSearch) 
$Val = 0 

foreach ($_ in $SearchArray) 
{ 
     if ($SearchNames -contains $_.FullName) 
     { 
      $_ | Export-Csv D:\Find_in_Search_File_$TimeStamp.csv -Delimiter ";" -Append 
      $Val = $Val + 1 
     } 
} 
"Count of matches - $Val" |Out-File D:\Find_in_Search_File_$TimeStamp.log -Append 
関連する問題