Вопрос или проблема
С помощью 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"
Разбор решения
-
Get-ChildItem
и-Recurse
: Эти команды выполняют рекурсивный поиск по указанному пути, здесь — "W:\ZZ Top".-Directory
указывает на поиск только по каталогам. -
Использование
Select-Object
с выражением:- Конструкция
@{Name="FullName";Expression={...}}
позволяет определить пользовательское выражение, где вы можете отформатировать вывод по своему усмотрению. - В вашем случае, команда
{$_.FullName.Trim() + '\Folder.jpg,' + $_.FullName.Trim() + '\AlbumArtSmall.jpg'}
сначала убирает пробелы с помощьюTrim()
, а затем добавляет требуемые строки\Folder.jpg,
и\AlbumArtSmall.jpg
.
- Конструкция
-
Out-File
: Эта команда сохраняет вывод в указанный файл. Она получает уже отформатированный вывод, так что проблем с нежелательными пробелами быть не должно.
Советы по улучшениям
- Убедитесь, что путь "W:\ZZ Top" и другие используемые пути доступны и правильно указывают на целевые директории.
- В случае, если форматирование все еще не соответствует ожиданиям, решением может стать проверка на наличие невидимых символов в исходных данных, которые можно удалить с помощью дополнительных методов обработки строк в PowerShell.
Данный подход обеспечит формирование текстового файла без избыточных пробелов и с включением дополнительного текста в каждой строке.