Я хочу искать файлы в папке и находить следующие строки в каждом файле, и я хочу вывести его в файл. Я хотел бы найти комбинацию из двух строк в файлах независимо от того, как она записана в файле. Я должен был бы найти эту комбинацию строк, даже если возврат каретки существует в середине этих двух строк.Найти комбинации двух строк в нескольких файлах
Вот код, который я до сих пор:
$Path = "C:\Promotion\Scripts"
$txt_string1 = "CREATE"
$txt_string2 = "PROC"
$PathArray = @()
$Results = "C:\Promotion\Errors\Deployment_Errors.txt"
# This code snippet gets all the files in $Path that end in ".sql".
Get-ChildItem $Path -Filter "*.sql" |
Where-Object { $_.Attributes -ne "Directory"} |
ForEach-Object {
If (Get-Content $_.FullName | Select-String -Pattern $txt_string2) {
$PathArray += $_.FullName
}
}
$PathArray | ForEach-Object {$_} | Out-File $Results
для быстрого ответа Ансгара. Но сценарий по-прежнему не возвращается, когда термин CREATE и PROC находится на двух разных строках, сценарий, который вы предоставили выше, работает только в том случае, если термины CREATE и PROC находятся в одной строке в файле. И я хочу, чтобы сценарий powershell идентифицировал файлы, где термины CREATE и PROC находятся рядом друг с другом, независимо от того, находятся ли они оба в одной строке или в разных строках в файле, если эти два термина следуют друг за другом сразу после другого он должен отображаться в выходном файле результатов. –
@PavanSanthanam. По-видимому, 'Select-String' обрабатывает входные файлы по строкам, поэтому многострочное совпадение не будет работать. Вам нужно прочитать весь контент файла как одну строку и передать его в 'Select-String'. См. Обновленный ответ. –