Переименование с периодическим сбросом счётчика

Обсуждение вопросов автоматизации Total Commander с помощью сторонних программ и скриптовых технологий.

Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер

Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

sa писал(а):А заказчик согласился? Или для него это и есть единственно приемлемый вариант?
Не вижу никаких заказчиков. Тут всё бесплатно. А вариант более чем годится.
sa писал(а):Разве в тотале пропала фильтрация вроде *.jpg;*.jpeg?
Тотал тут ни при чём. А при чём тут автоматизация, в разделе которой мы находимся, и твоя кнопка, коли ты взялся обсуждать мой скрипт и то, что он якобы не так делает.
sa писал(а):Рекурсия для кого-то может стать плюсом, а не минусом
Ага, особенно, если файлов в структуре столько, что ТС просто зависнет на полчасика. :lol:
sa писал(а):поставь первой командой в сцепке cm_ClearAllFiles
Вот ты и поставь, кнопка же не моя. Я свой скрипт поправил.
sa писал(а):в тотале надо действовать, как всегда, аккуратно, себе в помощь, а не во вред.
Вот именно, что надо. А со скриптом после единоразовой установки параметров не надо, поэтому он и выбран (собственно, как и всегда в таких ситуациях).
sa писал(а):Кнопка, собственно, самодостаточна.
И мы в этом убедились на примере выше с кучей вопросов о её непредвиденном поведении. Не надо забывать о разном уровне подготовки пользователей. Для тебя она, возможно, и годится.
sa писал(а):А вот в ИГП (с настройками по умолчанию), только и остаётся, что заменить [N] на [P] и подтвердить переименование.
Чтобы добиться настроек по умолчанию, нужно сперва поработать с ключом MultiRenameLoadSettings, до чего неквалифицированный пользователь просто не догадается.
И ИГП даже при, как я уже писал, стандартных установках куда более дурацкий результат способен выдать. Проверено.
sa писал(а):Собственно, всё, что я хотел, так это в очередной раз
потроллить работу Flasher'a.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Flasher писал(а): он якобы не так делает
Почему якобы? Такой результат (файлы с номерами 5, 9-19) и планировался? Зачем тогда скрипт было править? Вопросы риторические, само собой.
Flasher писал(а):нужно сперва поработать с ключом MultiRenameLoadSettings
У меня вместо этого давно кнопка имеется:

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

TOTALCMD#BAR#DATA
MULTIRENAME
Несуществующее имя шаблона
WCMICONS.DLL,46
Групповое переименование с настройками по умолчанию

0
-1
Или (если кто-то не успел поработать с ключом) перезапустить тотал.
Flasher писал(а):дурацкий результат способен выдать
Логично: сделаешь в тотале дурацкие установки, получишь в ИГП дурацкий результат.

Заканчиваю тебя здесь "троллить", хотя в исправленном скрипте и наткнулся на ошибки. :)
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

sa писал(а):Зачем тогда скрипт было править?
Чтобы твоя душенька успокоилась. Но, как оказалось, и это не помогло.
sa писал(а):У меня вместо этого давно кнопка имеется:
Замечательно. Только совсем несвоевременно.
sa писал(а):
Flasher писал(а):при, как я уже писал, стандартных установках куда более дурацкий результат способен выдать
Логично: сделаешь в тотале дурацкие установки
Без комментариев...
sa писал(а):хотя в исправленном скрипте и наткнулся на ошибки
О которых, как я понял, никто кроме тебя не узнает.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Flasher писал(а):Без комментариев...
Я полагал, что, говоря о стандартных установках, ты имел ввиду стандартные (умолчательные) установки в ИГП, я же говорил об установках вне ИГП: например было бы неверным ожидать от ТС, что он переименует все файлы в папке, в то время, как часть из них находится в задействованном списке исключений. Кстати, примерчик дурацкого поведения ты не представил.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Про список исключений даже не думал (ситуация с выделенными файлами аналогична). Примерчики за так не представляю. Уже вляпался в безответную правку, достаточно...
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

sa
Flasher
На этом очередной ваш высокоучёный спор объявляю закрытым.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Mashulechka
Сообщения: 8
Зарегистрирован: Сб окт 15, 2016 13:24

Сообщение Mashulechka »

Здравствуйте!
Помогите, люди добрые, понять, как осуществить задуманное.
Часто имею задачу, переименовывать файлы в подпапках так, чтоб имя файлов соответствовало названию папки плюс с соответствующим порядковым номером. Папок много, файлов в папках ещё больше. Поэтому хочется эту задачу как то оптимизировать.

Вижу так (если файлов в папке до 99 штук):
Папка 1
Папка 1 - 01
Папка 1 - 02
...
Папка 2
Папка 2 - 01
Папка 2 - 02
...
И так далее...

Сейчас это делаю так:
Ctrl+B, выделяю нужный тип файлов (чтоб переименовывались лишь нужные мне потом файлы), Ctrl+M, переименовываю по маске [P] [C], в настройке - количество цифр ставлю на одну больше. Потом повторяю процедуру, но ставлю на одну цифру меньше.

Зачем 2 раза: после первого прохода из-за разных, часто повторяющихся имён из разных папок, счётчик именует файлы в кашеобразном (но возрастающем) порядке, второй проход хотя бы даёт непрерывную последовательность чисел.
Но числа эти идут подряд во всех папках, и если, к примеру, в первой папке 10 файлов, то во второй папке - первый файл будет с номером 11, а хотелось бы, чтоб и во второй и в последующих папках нумерация начиналась с 01 (если всего обрабатывается не более 99 файлов, и с 001 - если не более 999 файлов).

Был так же совет переименовывать с маской [P] без счетчика и соглашением на автопереименование.
Этот вариант не подходит, так как первый файл не именуется, а остальные - идут с обычными номерами (1, а не 01 итд).

Посоветовали скрипт http://forum.wincmd.ru/viewpost.php?p=121419 , и тут уже стало совсем не понятно.

По этим ссылкам вроде всё так и сделано:
Как запускать скрипты: http://forum.wincmd.ru/viewtopic.php?t=12704
Как устанавливать: http://forum.wincmd.ru/viewpost.php?p=56542

По ссылке текст скрипта был помещён в файл с расширением vbs, на всякий кодировка поменяна на 866, установлен TCWSHelp.exe, зарегистрирован. Скрипт положен в корень папки с папками для переименования. Запускаю скрипт - ничего не происходит. Где то ещё писали, что нужен плагин script_wdx_0.2.0.2 - но тоже после установки ничего не происходит.

Перетаскиваю скрипт на панель, редактирую, чтоб добавить %L в поле "Параметры", ещё проба была там же очистить поле "Путь запуска". Пробую запустить скрипт с кнопкой в нормальном режиме и от администратора (нужные файлы при этом выделены).
Появляется окно с не читаемыми символами. (Если поможет - картинку могу прикрепить).

Код кнопки:

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

TOTALCMD#BAR#DATA
"g:\12345\Rename.vbs"
%L
C:\WINDOWS\System32\WScript.exe,2
Rename


-1
Потом по этой ссылке http://forum.wincmd.ru/viewpost.php?p=43748 читаю:
"Сделал скрипт для ScriptContentPlugin, который можно использовать в MRT." Возможно надо в MRT скрипт подключать, а не просто запускать?
Но как - то же не понятно...

[mod="CaptainFlint"]Ссылки "оживлены".[/mod]
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Mashulechka писал(а):По этим ссылкам вроде всё так и сделано:
А специально прикреплённый для этого в разделе топик с кричащим названием и со всеми подробностями не пробовали открыть?
Mashulechka писал(а):на всякий кодировка поменяна на 866
ANSI.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Mashulechka
Сообщения: 8
Зарегистрирован: Сб окт 15, 2016 13:24

Сообщение Mashulechka »

3 ошибки я поняло. :)
1. Не надо было кодировку на 866 менять.
В окне всплывающем - ранее не читаемом, написано:
"Переименование файлов внутри пап... Выполнено!"
2. В параметрах надо было вписывать не %L, а %WL
3. Выделять надо было не файлы по Ctrl+B, а сами каталоги.

Сработало.
Но к сожалению, не так как я ожидало.
Нумерация файлов: (1), (2), (3)...(10)...
Хотелось же: (01), (02), (03)...(10)...
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Mashulechka писал(а):Хотелось же:
[cut="См. добавку снизу шапки:"]

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

'========================= VBS ==========================
' Переименовать файлы внутри выбранных папок по их именам
' при включении алфавитной сортировки (по умолч. прямой)

' Параметры: %WL
' необязат.: <фильтр-список расширений>
'            <cортировка обратная: 1>
' Примеры:   %WL
'            %WL *.jpg;*.jpeg 1
'========================================================
Const Rank = 2 ' Минимальное число цифр в именах копий
'========================================================
With WSH.Arguments
  C = .Count : If C = 0 Then WSH.Quit
  List = .Item(0) : If C > 1 Then Filt = .Item(1)
  If Filt = "" Then Filt = "*.*"
  If C = 2 Then Sort = .Item(2)
End With : Set ShA = CreateObject("Shell.Application")
Set Lst = CreateObject("System.Collections.ArrayList")
Set FSO = CreateObject("Scripting.FileSystemObject")
Set Reg = New RegExp : Reg.IgnoreCase = True
Set Rgx = New RegExp : Rgx.Global = True
Rgx.Pattern = "([()+.[^{$])"

With FSO.OpenTextFile(List,,,-1)
  Do : P = Trim(.ReadLine)
    If FSO.FolderExists(P) Then
      Set Path  = ShA.NameSpace(P)
      Set Items = Path.Items
      Items.Filter 73952, Filt
      If Items.Count Then
        For Each F in Items
          If FSO.FileExists(F.Path) Then Lst.Add CStr(F)
        Next : i = 1 : Lst.Sort : If Sort = 1 Then Lst.Reverse
        For Each F in Lst
          Ext = FSO.GetExtensionName(F)
          Reg.Pattern = "^" & Rgx.Replace(_
          Path.Title, "\$1") & " \(\d+\)\.?" & Ext & "$"
          If Not Reg.Test(F) Then
            If Len(Ext) Then Ext = "." & Ext
            FP = P & Path.Title : FN = FP & " (" & R(1) & ")" & Ext
            While FSO.FileExists(FN) Or FSO.FolderExists(FN)
              i = i + 1 : FN = FP & " (" & R(i) & ")" & Ext
            Wend
            FSO.GetFile(P & F).Name = Path.Title & " (" & R(i) & ")" & Ext
          End If
        Next : Lst.Clear
      End If
    End If
  Loop Until .AtEndOfStream : .Close
End With
MsgBox Space(18) & "Выполнено!", 4160,_
" Переименование файлов внутри папок      "
Function R(n) R = Right(String(Rank, "0") & n, Rank) End Function
[/cut]
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Mashulechka
Сообщения: 8
Зарегистрирован: Сб окт 15, 2016 13:24

Сообщение Mashulechka »

Flasher
Спасибо! Теперь моя душенька довольна!
Fess
Сообщения: 2
Зарегистрирован: Пн ноя 11, 2019 20:16

Сообщение Fess »

Batya писал(а):Сделал скрипт для ScriptContentPlugin, который можно использовать в MRT. При этом текущий счетчик и текущая папка хранятся в реестре. Получилось очень медленно и в общем случае криво.

Brnandman
Лучше сделать скрипт, который сам переименовывает выделенные файлы.
Нужна именно маска вида "photo[C1+1:2]"? Т. е. одинаковый префикс для всех файлов, а далее без разделителя двухзначное число?
Опиши более детально требования для переименования.
Добрый день. А как в вашем скрипте убрать то что конечные именна файлом начинаются с 00? Цель: переименовать в нескольких папках файлы по порядку 1.2.3....
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Fess
См. 19-20 строки шапки кода.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Fess
Сообщения: 2
Зарегистрирован: Пн ноя 11, 2019 20:16

Сообщение Fess »

Flasher писал(а):Fess
См. 19-20 строки шапки кода.
Если честно, даже не понял куда смотреть)Ткните носом, если не сложно что нужно исправить?
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Fess
Специально для вас сверху данного раздела прикреплена памятка.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Ответить