Não consigo encontrar uma resposta exata para o meu uso particular em um local, por isso estou perguntando. Eu sou muito novo no PowerShell, então os comandos são estranhos para mim.
Usando o PowerShell, como posso pesquisar um arquivo em todas as ocorrências de "qualquer string" entre duas strings específicas e, em seguida, exibir cada ocorrência de "qualquer string" em outro arquivo de texto? Lembre-se, "qualquer string" varia enquanto as strings específicas são as mesmas a cada vez.
Observação: meu código abaixo, na verdade, pesquisa todos os arquivos .xml em uma pasta específica, que é o que eu quero fazer.
Veja o que eu tenho atualmente:
$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
}
}
Isso funciona principalmente, mas coloca o "Tag" e "/ Tag" (dentro dos colchetes angulares) no arquivo de saída, o que eu não quero. Eu só quero o que há entre essas tags. Este é um script muito lento, levando vários minutos para ser concluído em mais de 165 arquivos. Eu experimentei outro código usando Select-String que era muito mais rápido, mas ele ainda incluía informações extras que eu não queria. Obrigado por toda sua ajuda!