Экспорт путей и названий файлов в CSV документ [РЕШЕНО]

За решение большое спасибо и поклон до земли  @asper! Vivat asper!
Сссылка на коммент: #comment_101344074

=====


Доброго времени суток, господа компуктероведы =)


Есть большой каталог с ~2500 фото, расфасованы в ~500 папок.
Вид примерно следующий:


D:\PHOTOS\Техно\tehno110-belyj-dub.png
D:\PHOTOS\Portas\S22\monte-bello-m088a.png
D:\PHOTOS\ZADOOR\Маэстро\majestro-amerikanskij-oreh-chernyj-ris.png

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

Внимание, вопрос - можно ли создать CSV файл, у которого в столбцах прописаны будут название папок и конечное имя файла? Вручную это долгий процесс, возможно программы специальные есть или скажем .batник?

Конечная цель - импорт в интернет-витрину Woocommerce.

Заранее благодарен за любую помощь =)

=====

UPD: Насколько понял, это можно сделать макросом прямо в Exel. Может кто поделится работающим кодом для записи каталога в таком виде(пример):

(образец) D:\PHOTOS\Portas\S22\monte-bello-m088a.png

| Portas | S22 | monte-bello-m088a |

Лига Сисадминов

1.5K поста17.7K подписчика

Добавить пост

Правила сообщества

Мы здесь рады любым постам связанным с рабочими буднями специалистов нашей сферы деятельности.

Вы смотрите срез комментариев. Показать все
9
Автор поста оценил этот комментарий

Я очень ленив:

foreach ($file in (Get-ChildItem -Recurse -File)){Add-Content 'photo.csv' ((Split-Path -Path $file.FullName -NoQualifier) -replace "\\",";")}

Открыть консоль powershell, сделать d:

и запустить этот код.

Пройдёт рекурсивно от текущей папки по всем подпапкам, возьмёт полные пути к файлам без буквы диска, заменит там слеш на точку с запятой - на выходе photo.csv с лишним столбцом в начале.

PS На коленке, можно лучше.

PPS Не уверен, какая версия PS нужна, у меня везде 5ая.

PPPS Лучше копировать, в цитате пикабу двойной обратный слеш выглядит как две вертикальные линии.

раскрыть ветку (11)
2
Автор поста оценил этот комментарий

Спасибо, все получилось. Правда запускал не прямо из корня, а открыв d:\photos (из корня он задумался и споткнулся где-то, у меня помимо фоток на диске еще ~600гб хлама разного).

Добавил ссылку на комент в шапку для страждущих.

Еще раз огромное спасибо.

раскрыть ветку (7)
1
Автор поста оценил этот комментарий

Да, про хлам в других местах я не подумал как-то.

раскрыть ветку (6)
Автор поста оценил этот комментарий

Уважаемый, можно ли в данный код:

foreach ($file in (Get-ChildItem -Recurse -File)){Add-Content 'photo.csv' ((Split-Path -Path $file.FullName -NoQualifier) -replace "\\",";")}
Добавить еще один столбец, куда будет выводится путь, типа " D:\PHOTOS\Portas\S22\monte-bello-m088a.png" ?

С меня полтинник на телефон в благодарность за потраченное время ^_^

раскрыть ветку (2)
1
Автор поста оценил этот комментарий

ну, полный путь лежит в $file.FullName

так что один из вариантов - приклеить к имеющейся строке сначала точку с запятой, а потом его:

foreach ($file in (Get-ChildItem -Recurse -File)){Add-Content 'photo.csv' (-join (((Split-Path -Path $file.FullName -NoQualifier) -replace "\\",";"),";",$file.FullName))}

раскрыть ветку (1)
Автор поста оценил этот комментарий

Большое спасибо.

Куда скинуть денежку?

Автор поста оценил этот комментарий

Не страшно, уж такого рода мелочи я и сам осилю.

Сейчас сижу, думаю как синхронизировать с файлами фоток на хостинге при импорте. Скорее всего нужно будет еще столбец с адресами файлов добавить. А потом еще что-то вылезет.

Удивительный мир xD

раскрыть ветку (2)
Автор поста оценил этот комментарий

winscp умеет синхронить каталоги по разным протоколам.

раскрыть ветку (1)
Автор поста оценил этот комментарий

Да каталог-то один и тот же. Вопрос в импорте в  woocommerce - если товарные позиции пропишутся нормально, то фотографии взять будет не откуда. В общем, по итогу что-то такое видимо получится (хотя по факту, кроме наименования, категории и подкатегории мне ничего больше не нужно. Цен и артикулов нет):

Иллюстрация к комментарию
Автор поста оценил этот комментарий

работает! только вместо d: надо прописать путь откуда делать поиск =)

Автор поста оценил этот комментарий

если импорт-цсв использовать сразу? без адд-контента.

раскрыть ветку (1)
Автор поста оценил этот комментарий

А зачем, если мы там сразу готовим csv строку? Конечно, красивее было бы сделать что-то вроде

Get-ChildItem -Recurse -File | Select-Object FullName | Split-Path -NoQualifier | % {$_.Repla
ce("\",";")} | Out-File photo.csv

Да и сплит-пас не сильно надо, просто надо будет в выходном документе удалить столбец с d:

И реплейс тоже не сильно, можно экселю сказать, что разделитель слеш.

Вариантов всегда больше одного )

Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку