Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - Сортировка файлов по имени.

Ответить
Настройки темы
Любой язык - Сортировка файлов по имени.

Новый участник


Сообщения: 9
Благодарности: 0

Профиль | Отправить PM | Цитировать


Здравствуйте. Прошу помощи в написании программы для сортировки файлов.
Ситуация такая. Есть папка с подпапками в которых сотри картинок скаченных с deviantart. Файлы имею имя вот такого типа "zzzz_zzz_by_xxxxx-d5dw6o7" "zzzz_zzz" - вместо этого может быть любой набор слов. После "by" идет автор картинки "xxxxx". Надо что бы программа рассортировала картинки по ее автору. Все картинки определенного автора в определенную папку.

Отправлено: 09:45, 23-09-2015

 

Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


Цитата Extazik:
сотри »
«сотни»?

Упакуйте для примера по две-три картинки двух-трёх авторов в архив, выложите его на RGhost, ссылку — сюда.

Отправлено: 09:56, 23-09-2015 | #2



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

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


Пользователь


Сообщения: 114
Благодарности: 13

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
dir $path *.jpg -Recurse | foreach {New-Item -ItemType directory -Path ("F:\test\" + (((($_.Name -split "_by_")[1]) -split "-")[0])) -ErrorAction SilentlyContinue;
Copy-Item $_.FullName  -Destination ($path + "\" + (((($_.Name -split "_by_")[1]) -split "-")[0]) + "\") -ErrorAction SilentlyContinue
}
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:58, 23-09-2015 | #3


Ветеран


Сообщения: 1759
Благодарности: 966

Профиль | Цитировать


corbis, А если в имени автора есть '_by_' и/или '-' ?

Отправлено: 17:35, 23-09-2015 | #4


Пользователь


Сообщения: 114
Благодарности: 13

Профиль | Отправить PM | Цитировать


ну, автор дал шаблон, я по шаблону и сделал. Будут другие условия - будет другое решение.
И вообще, я не настаиваю на использовании, просто предложил вариант.

Отправлено: 18:01, 23-09-2015 | #5


Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


Сейчас автор нам подскажет.

Отправлено: 18:16, 23-09-2015 | #6


Ветеран


Сообщения: 1759
Благодарности: 966

Профиль | Цитировать


Мой вариант, но наверное тоже можно придраться:
Код: Выделить весь код
$groups = get-childitem 'D:\test' | group { ($_ -split '^.+_by_|-[^-]+$')[1] }
foreach ($group in $groups) {

	$null = new-item -itemtype dir "D:\test\$($group.name)"
	$group.group | foreach { move-item $_.fullname "D:\test\$($group.name)" } 

}
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:26, 23-09-2015 | #7


Новый участник


Сообщения: 9
Благодарности: 0

Профиль | Отправить PM | Цитировать


Iska, Ну вот для примера я несколько картинок упаковал http://rghost.ru/6DQkn5FfY.
Foreigner, Авторов у которых в имени есть "_by_" я еще не встречал, хотя наверное есть такие. Вот авторов у которых есть "-","_" я встречал.

Цитата Foreigner:
Мой вариант, но наверное тоже можно придраться »
Ваш вариант у меня заработал, спасибо, очень круто
Есть только одна маленькая проблемка. Файлы в под папках программа почему то не видит. Можно это исправить?

Последний раз редактировалось Extazik, 23-09-2015 в 18:53.


Отправлено: 18:31, 23-09-2015 | #8


Ветеран


Сообщения: 1759
Благодарности: 966

Профиль | Цитировать


Цитата Extazik:
Файлы в под папках программа почему то не видит. Можно это исправить? »
Добавить -recurse к get-childitem:
Код: Выделить весь код
$groups = get-childitem 'D:\test' -recurse | ...
Но проблема с вхождениями _by_ не решена, так что результат может быть неожиданным..
Это сообщение посчитали полезным следующие участники:

Отправлено: 19:03, 23-09-2015 | #9


Новый участник


Сообщения: 9
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата Foreigner:
Но проблема с вхождениями _by_ не решена, так что результат может быть неожиданным.. »
Картинки у которых в имени два и более _by_ просто игнорируются, это не страшно, т.к я еще не встречал такие файлы, пока что

А можно еще добавить возможность удалять пустые папки?

Отправлено: 19:15, 23-09-2015 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - Сортировка файлов по имени.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Любой язык - Поиск файлов по имени папки и сортировка Noscripter Скриптовые языки администрирования Windows 1 23-03-2015 00:43
CMD/BAT - сортировка файлов по папкам по дате в названии insearches Скриптовые языки администрирования Windows 1 03-02-2013 17:03
PowerShell - Сортировка файлов по подстроке kostich Скриптовые языки администрирования Windows 12 15-12-2012 13:27
CMD/BAT - Сортировка файлов по расширению cyber_ua Скриптовые языки администрирования Windows 9 07-10-2012 23:16
Медиа - [решено] Сортировка файлов по номеру, имени и т.д. medvedkovo Microsoft Windows 7 2 19-01-2011 01:34




 
Переход