Я не можу знайти точну відповідь для мого конкретного використання в одному місці, тому я прошу. Я дуже новачок у PowerShell, тому команди мені чужі.
Використовуючи PowerShell, як я можу шукати файл за всіма явищами "будь-якого рядка" між двома певними рядками, а потім виводити кожне виникнення "будь-якого рядка" в інший текстовий файл? Зауважте, "будь-яка рядок" змінюється, тоді як конкретні рядки щоразу однакові.
Примітка. Мій код нижче фактично здійснює пошук усіх .xml-файлів у певній папці, і саме це я хочу зробити.
Ось що я зараз маю:
$path = "E:\files"
$outfile = "E:\testoutput.txt"
$files = Get-Childitem $path *.xml -Recurse | Where-Object { !($_.psiscontainer) }
$pattern = "<Tag>(.*?)</Tag>"
# Loop through all the $files
foreach ($file in $files) {
$file.Name | Out-File $outfile -Append
# Loop through each line that matches $pattern
Get-Content $file.FullName | Where-Object {$_ -match $pattern} | ForEach-Object {
$_ | Out-File $outfile -Append
}
}
Це здебільшого працює, але він розміщує "Тег" та "/ Тег" (всередині кутових дужок) у вихідний файл, чого я не хочу. Я хочу лише те, що знаходиться між цими тегами. Це дуже повільний сценарій, який потребує декількох хвилин, щоб виконати 165+ файлів. Я експериментував з іншим кодом, використовуючи Select-String, який був набагато швидшим, але він все ще включав додаткову інформацію, яку я не хотів. Дякую за всю допомогу!