2015-03-19 5 views
0

В настоящее время я пишу скрипт, который объединяет все содержимое нескольких текстовых файлов в один файл. Я хотел бы (если возможно) записать в файл имя файла над содержимым из этого файла.Powershell добавить имя файла в текстовый файл

Пример:

Textfile1.txt 

ContentContentContent 
ContentContentContent 

Textfile2.txt 

ContentContentContent 
ContentContentContent 

Textfile3.txt 

ContentContentContent 
ContentContentContent 

Возможно ли это?

+0

Можете ли вы предоставить более подробную информацию, предпочтительно некоторые примеры кода, показывающий, как вы захватывая список имен файлов и выписывать их? Ответ действительно зависит от того, как вы сейчас делаете. –

ответ

1

Да, это не слишком сложно. Мы получаем список файлов, которые нам нужны, используя команду Dir, затем мы передаем ее в ForEach для запуска {scriptblock}. Затем мы создадим файл $variable, чтобы создать фрагмент текста, который мы добавим в наш существующий файл (Output.txt).

Мы можем использовать переменную $_, чтобы вытащить свойство FileName, а затем использовать командлет Get-Content, чтобы захватить текст файла, предоставив нам нужные поля. Мы присоединяем их к символу `n NewLine. Конечный результат, заключается в следующем:

dir *.txt | ForEach { 
    $variable = "$($_.Name)`n$(Get-content $_.FullName)" 
    Add-Content -Value $variable -Path .\Output.txt 
} 

Который дает нам выход так:

TextFile1.txt 
ContentContentContent ContentContentContent 
TextFile2.txt 
ContentContentContent ContentContentContent 
TextFile3.txt 
ContentContentContent ContentContentContent 
+1

Обратите внимание, что 'dir' является псевдонимом для' Get-ChildItem' и 'ForEach' является псевдонимом для' ForEach-Object'. Требуется уточнение, если OP хочет получить однострочный или многострочный вход из содержимого файла. – Matt

+0

Огромное спасибо за вашу помощь всем, вы ответили на мои вопросы отлично! –

+0

@MarcClar Если это ответили на ваш вопрос (который он не выглядит полностью, так как вы сделали новый), отметьте это как принятое. Вы должны были просто спросить ответчика о вашей проблеме, чтобы он мог обновить ответ здесь. – Matt

Смежные вопросы