我的目標是爲所有包含正則表達式的文件以最快的速度遞歸地搜索目錄。然後輸出到具有包含完全匹配的列的CSV,而另一列顯示它們被發現的文件。感謝用戶woxxom,我開始玩IO.File
,因爲它明顯比使用Select-String
快得多。使用PowerShell快速搜索正則表達式的文件並輸出爲CSV
這是一個我一直在努力工作很長時間的項目,通過Select-String
和Export-Csv
完成,但這是一個相當緩慢的過程。
對於我錯過的新嘗試有何想法?
$ResultsCSV = "C:\TEMP\Results.csv"
$Directory = "C:\TEMP\examples"
$RX = "(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(?:\.|dot|\[dot\]|\[\.\])){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"
$TextFiles = Get-ChildItem $Directory -Include *.txt*,*.csv*,*.rtf*,*.eml*,*.msg*,*.dat*,*.ini*,*.mht* -Recurse
$out = [Text.StringBuilder]
foreach ($FileSearched in $TextFiles) {
$text = [IO.File]::ReadAllText($FileSearched)
foreach ($match in ([regex]$RX).Matches($text)) {
if (!(Test-Path $ResultsCSV)) {
'Matches,File Path' | Out-File $ResultsCSV -Encoding ASCII
$out.AppendLine('' + $match.value + ',' + $FileSearched.fullname)
$match.value | Out-File $ResultsCSV -Encoding ascii -Append
$FileSearched.Fullname | Out-File $ResultsCSV -Encoding ascii -Append
$out.ToString() | Out-File $ResultsCSV -Encoding ascii -Append -NoNewline
}
}
}
爲什麼這個標籤Excel中的表現? – xidgel
良好的通話,我刪除了標籤。 – MrMr
*「有什麼想法,我失去了我的新嘗試?」*不知道。什麼不按預期工作? –