Использую Get-ChildItem для вывода в текстовый файл, но не получается правильно отформатировать текстовый файл.

Вопрос или проблема

С помощью PowerShell я пытаюсь собрать все пути к файлам для всех файлов во всех подпапках, используя Get-ChildItem:

Get-ChildItem -Path "W:\ZZ Top" -Recurse -Directory | Select-Object FullName, {'\Folder.jpg,'} | Out-File "W:\File3.txt"

Выходной файл появляется с лишними пробелами, которые я не могу понять, как убрать до добавления дополнительного текста.

Get-ChildItem -Path “W:\ZZ Top” -Recurse -Directory |
Select-Object @{Name=”FullName”;Expression={$.FullName.Trim() + ‘\Folder.jpg’ + ‘,’ + $.FullName.Trim() + ‘\AlbumArtSmall.jpg’}} |
Out-File “W:\File3.txt”

Это сработало

.

Ответ или решение

Водя себя в роли эксперта по информационным технологиям, давайте разберем трудности с форматированием при использовании команды PowerShell Get-ChildItem для вывода данных в текстовый файл.

Проблема

Вы пытаетесь собрать все пути к файлам во всех подкаталогах на диске с использованием команды Get-ChildItem и записать результаты в текстовый файл. Однако структура выходного файла содержит нежелательные пробелы, которые вы не удается устранить на этапе добавления дополнительного текста.

Решение

Для достижения требуемого форматирования решающим шагом является использование Select-Object с корректно заданным выражением и преобразования данных в строку без лишних пробелов. Ваш второй вариант кода предлагает именно такое решение:

Get-ChildItem -Path "W:\ZZ Top" -Recurse -Directory |
Select-Object @{Name="FullName";Expression={$_.FullName.Trim() + '\Folder.jpg,' + $_.FullName.Trim() + '\AlbumArtSmall.jpg'}} |
Out-File "W:\File3.txt"

Разбор решения

  1. Get-ChildItem и -Recurse: Эти команды выполняют рекурсивный поиск по указанному пути, здесь — "W:\ZZ Top". -Directory указывает на поиск только по каталогам.

  2. Использование Select-Object с выражением:

    • Конструкция @{Name="FullName";Expression={...}} позволяет определить пользовательское выражение, где вы можете отформатировать вывод по своему усмотрению.
    • В вашем случае, команда {$_.FullName.Trim() + '\Folder.jpg,' + $_.FullName.Trim() + '\AlbumArtSmall.jpg'} сначала убирает пробелы с помощью Trim(), а затем добавляет требуемые строки \Folder.jpg, и \AlbumArtSmall.jpg.
  3. Out-File: Эта команда сохраняет вывод в указанный файл. Она получает уже отформатированный вывод, так что проблем с нежелательными пробелами быть не должно.

Советы по улучшениям

  • Убедитесь, что путь "W:\ZZ Top" и другие используемые пути доступны и правильно указывают на целевые директории.
  • В случае, если форматирование все еще не соответствует ожиданиям, решением может стать проверка на наличие невидимых символов в исходных данных, которые можно удалить с помощью дополнительных методов обработки строк в PowerShell.

Данный подход обеспечит формирование текстового файла без избыточных пробелов и с включением дополнительного текста в каждой строке.

Оцените материал
Добавить комментарий

Капча загружается...