Страница 1 из 1

Сортировка списка файлов по отдельным символам

Добавлено: Пт ноя 04, 2011 22:48
sancher
Не нашёл подобных вопросов.
У меня файлы, на конце которых указан год.
То есть, например, файлы вида Название_2004, Название_2005,...
Задача: отсортировать все файлы по последним 4-м символам, то есть по году.
Буду благодарен за помощь.

[mod="Avada"]С учётом реального содержания тема перенесена из "Общих вопросв" в "Автоматизацию".[/mod]

Добавлено: Сб ноя 05, 2011 00:19
Volniy
Можно создать колонку в пользовательском наборе через Script Content Plugin. Навскидку:

Код: Выделить всё

'(c)Volniy, 2011


'Get last 4 digits 4 future sorting
'file12004.txt   -> 2004
'file22011.txt   -> 2011
'etc.

Dim fso, tmp
Set fso = CreateObject("Scripting.FileSystemObject")
tmp = LCase(fso.GetbaseName(filename))
content = Right(tmp,4)

Добавлено: Сб ноя 05, 2011 01:22
Flasher
Для данного случая я бы предпочёл:
BaseNameRev.vbs:

Код: Выделить всё

BN = LCase(CreateObject("Scripting.FileSystemObject").GetBaseName(FileName))
i = InStrRev(BN, "_")
y = Mid(BN, i + 1)
If i > 0 And IsNumeric(y) Then content = y
Script.ini:

Код: Выделить всё

[Script]
Section=BaseNameRev

[BaseNameRev]
Script=BaseNameRev.vbs
Думаю, подобную возможность не помешало бы прикрутить к плагинам nicepaths, filemask, expander(2).

Добавлено: Сб ноя 05, 2011 11:02
sa
sancher писал(а):Задача: отсортировать все файлы по последним 4-м символам, то есть по году.
Как вариант: переименовать (с помощью инструмента группового переименования и регулярных выражений) файлы, перенеся/добавив год в начало имени. С помощью отката можно при необходимости вернуть прежние имена.

Добавлено: Сб ноя 05, 2011 11:59
sancher
всем спасибо за помощь!

Добавлено спустя 41 минуту:

и всё-таки решил задать ещё один вопрос...
может пригодится не только мне
просто опыта работы с плагинами мало, поэтому сразу
ничего не вышло
установил плагин, создал BaseNameRev.vbs, поправил Script.ini
настроил набор колонок ([=script.Result])
и тишина...
стал копаться
так и не понял, как настроить, чтобы плагин работал при наличии нескольких скриптов, т. е. при наличии дефолтного ext.vbs и нового BaseNameRev.vbs
пришлось в Script.ini закомментить дефолтный скрипт
[Script]
Section=BaseNameRev
;Section=Extension

теперь BaseNameRev.vbs выводит результат в [=script.Result]
как заставить работать при наличии нескольких скриптов?
как плагин поймёт, из какого скрипта брать script.Result?
я сначала подумал, что нужно писать [=BaseNameRev.Result]
не вышло

Добавлено: Сб ноя 05, 2011 12:34
Flasher
sancher писал(а):как заставить работать при наличии нескольких скриптов?
Обсуждается в спецтеме.