Я хотел бы получить контент из файлов в папке (игнорируя строки заголовка, так как в некотором файле может быть ТОЛЬКО содержит заголовок). Но на выходе я хотел бы указать имя файла, из которого читается строка. До сих пор у меня есть следующие:Включить имя файла на выходе
Get-ChildItem | Get-Content | Where { $_ -notlike "HEADER_LINE_TEXT" } | Out-File -FilePath output_text.txt
Я пытался работать с созданием переменной в блоке Где, $filename=$_.BaseName
, и использовать его на выходе, но это не сработало.
EDIT:
Я закончил с следующее:
Get-ChildItem -Path . | Where-Object { $_.FullName -like "*records.txt"; $fname=$_FullName; } | Get-Content | Select-Object { ($fname + "|" + $_.Trim()) } | Where { $_ -notlike "*HEADER_LINE_TEXT*" } | Format-Table -HideTableHeaders | Out-File -FilePath output_text.txt
Это выглядит длительным, и, вероятно, может быть короче и яснее. Может кто-нибудь помочь с его очисткой? Я либо отправлю решение, либо проголосую за более чистое решение, если оно опубликовано. Благодарю.
Спасибо, @BenH. Я действительно не хотел держать его как одну линию. Ваше предложенное решение в первом блоке кода работало для меня. –
Оба подхода работают, и имеют плюсы и минусы. Но я согласен с тем, что первый подход - это то, что я буду использовать, потому что я уделяю приоритетное внимание читабельности и легкой модификации всякий раз, когда это разумно. Рад, что это сработало:) – BenH