Рекурсивный поиск Powershell для выбора файлов .txt с последующим выводом содержимого всех файлов в один файл .txt - PullRequest
0 голосов
/ 21 ноября 2018

Любая помощь приветствуется.

У меня есть папка, содержащая более 30 папок, в каждой из которых есть файл .txt, который я могу найти, используя:

Get-ChildItem -Фильтр * .txt -Recurse

Я хочу прочитать содержимое каждого обнаруженного файла .txt и вывести содержимое в новый файл .csv на моем рабочем столе, который также содержит каталог каждого файла .txtотображаемое содержимое.

Вопрос состоит из двух частей:

  1. как использовать команды pipe и powershell для чтения / отображения всех слов в файлах.

  2. как создать данные csv, которые будут выводить как имя каталога, так и содержимое файлов .txt.

Я уже могу передать результаты в:

c: \ desktop \ test.csv -Кодирование ascii -noTypeInformation

1 Ответ

0 голосов
/ 21 ноября 2018

Следующий скрипт читает все файлы .txt в определенном каталоге, сохраняет полное имя файла и путь, а также содержимое файлов в массиве и сохраняет его в формате csv.

$csvOut = @()
Get-ChildItem -LiteralPath C:\temp -Filter *.txt -File -Recurse | foreach {

    $fileData = @{
        "File"=$_.FullName;
        "Content"=(Get-Content -LiteralPath $_.FullName -Raw)
    }
    $csvOut += (New-Object psobject -Property $fileData)
}

$csvOut | Export-Csv -LiteralPath "C:\temp\csvout.csv" -NoTypeInformation
...