Групповое переименование в подкаталогах

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

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

Аватара пользователя
Джорж
Сообщения: 10
Зарегистрирован: Чт фев 02, 2012 22:50
Откуда: Sankt-Peterburg

групповое переименование в подкаталогах

Сообщение Джорж »

За подсказку о редакторе для переименовки спасибо, потренируюсь.
А вот сортировкой по по полному пути не получается.
Раньше делал просто: Alt+F7 - файлы на панель - Ctrl+M ,
но в таком случае файлики нумеруются/именуются все подряд,
а хотелось бы покаталожно. Не открывать же сотню папочек подряд
Я признателен всем, кто говорил мне «нет»: благодаря им я делал все сам.
У. Дайер
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Боюсь, такую задачу тоталом не решить, в нем нет средств поиска N-го числа файлов в папке.

Остается скрипт (или утилита), который будет перебирать все папки из списка и находить в них 3 последних файла (построением сортированного массива или как-либо ещё).

Но если есть такой скрипт, то проще будет переименовывать файлы сразу из него, а не искать способы передать тоталовскому переименователю найденные файлы.
Аватара пользователя
alexey65536
Сообщения: 1056
Зарегистрирован: Пт янв 20, 2006 10:58
Откуда: Taganrog

Сообщение alexey65536 »

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

Сообщение Flasher »

Джорж писал(а):А вот сортировкой по по полному пути не получается.
Тут недавно писал. Или это понятно? Что именно не получается?
MVV писал(а):Но если есть такой скрипт
Если бы, да кабы. :wink: Нет таких скриптов. А делать лень. Хотя как - прекрасно знаю.

P.S.: Не пора ли тему в Автоматизацию?
Аватара пользователя
Джорж
Сообщения: 10
Зарегистрирован: Чт фев 02, 2012 22:50
Откуда: Sankt-Peterburg

Сообщение Джорж »

Flasher писал(а):в режиме "файлы без покаталогов" отсортировать по полному пути в обратном порядке, выделить вторые файлы подкаталогов, открыть ИГП и переименовать выделенное, и так же поступить с первыми файлами
Спасиб, конечно. Настроил пользоват. колонки, Ctrl+B и что я вижу? Надо опять искать и выделять файлы вручную. Это так же удобно как отрыть и закрыть сотню папок. Знаете, бывает, смотрю сутками в экран и рябит в глазах от поиска файликов и перенумеровки. Давно бы пора скриптик написать для работников эл. архивов.
Плагином [=dirsizecalc.Количество файлов] пользуюсь- это удобно. А для поиска последних файлов в подкаталогах ничего не нашел подобного.

Скрин

[mod="Avada"]Неформатная картинка заменена ссылкой. Соблюдаем правила форума! [/mod]
Я признателен всем, кто говорил мне «нет»: благодаря им я делал все сам.
У. Дайер
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Джорж писал(а):Надо опять искать и выделять файлы вручную. Это так же удобно как отрыть и закрыть сотню папок.
Необоснованное приравнивание. В том то и дело, что каждый каталог нужно сперва открыть, потом выделить файлы, потом открыть ИГП с шаблоном, выполнить, закрыть ИГП, выйти из папки, зайти в другую и так проделывать сотни раз с учётом структур всех каталогов. В то время как тут всего лишь требуется пару раз выделить, никуда не переходя, и переименовать в указанном диалоге.
И показанная колонка на картинке не соответствует содержимому поля, что в посте по моей ссылке.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Джорж писал(а):Надо опять искать и выделять файлы вручную.
Может быть, пригодится вот такой скрипт:

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

'----------------------------------------------------------------------------
'  Описание:  Выделить файлы и/или каталоги, следующие за выделенными,
'            либо предшествующие им. Cледующим за последним считается первый,
'            предшествующим первому - последний. При отсутствии исходного 
'            выделения, выделенным считается файл/каталог под курсором.
'Требования: Необходима регистрация WSH Helper for TC by Volniy
'  Параметр: Если указан (любой), то выделить предшествующие.
'----------------------------------------------------------------------------
Option Explicit
Dim TCS, List, Cnt, ListS, Buf, PasDir, Dic, S, UpDown, CntNew, TextClip
Set TCS = CreateObject("TCScript.Helper")
UpDown = 1
If WScript.Arguments.Count > 0 Then UpDown = -1
TCS.LockTC True
TCS.Pause = 0
TextClip = TCS.GetTextFromClip
PasDir = TCS.GetSrcPath
TCS.SendCommand "cm_CopyFullNamesToClip", True
ListS = Split(TCS.GetTextFromClip,vbNewLine)
Set Dic = CreateObject("Scripting.Dictionary")
For Each S In ListS
  Dic.Add (S), ""
Next
TCS.SendCommand "cm_SelectAllBoth", True
TCS.SendCommand "cm_CopyFullNamesToClip", True
TCS.SendCommand "cm_ClearAll", True
List = Split(TCS.GetTextFromClip,vbNewLine)
For Cnt = 0 To UBound(List)
  If Dic.Exists(List(Cnt)) Then
    CntNew = Cnt+UpDown
    If CntNew > UBound(List) Then CntNew = 0
    If CntNew < 0 Then CntNew = UBound(List)
    Buf = Buf & Mid(List(CntNew), Len(PasDir) +2) & vbNewLine
  End If
Next
TCS.SetTextToClip CStr(Buf)
TCS.SendCommand "cm_LoadSelectionFromClip", True
TCS.SetTextToClip(TextClip)
TCS.LockTC False
Set TCS = Nothing
Wscript.Quit
Использовать в данном случае, например, так:
1. Ctrl+B (или Ctrl+Shift+B для выделенных).
2. Отсортировать по папкам с помощью колонки с путём (=tc.Путь).
3. Выделить (Num+) файлы по маске 001*.jpg. Переименовать их в ИГП (Ctrl+M).
4. Num+ 001*.jpg. Вызвать скрипт. Должны выделиться 002*.jpg. Ctrl+M.
5. Num+ 001*.jpg. Вызвать скрипт дважды. Должны выделиться 003*.jpg. Ctrl+M.
6. Num+ 001*.jpg. Вызвать скрипт с параметром.
Должны выделиться последние в подпапках. Ctrl+M.
7. Num+ 001*.jpg. Вызвать скрипт с параметром дважды.
Должны выделиться предпоследние в подпапках. Ctrl+M.
8. Num+ 001*.jpg. Вызвать скрипт с параметром трижды.
Должны выделиться предпредпоследние в подпапках. Ctrl+M.
Кнопка для сдедующих:

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

TOTALCMD#BAR#DATA
"%COMMANDER_PATH%\VBS\Выделить следующие за выделенными.vbs"

wcmicons.dll,19
Выделить следующие за выделенными


-1
для предшествующих:

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

TOTALCMD#BAR#DATA
"%COMMANDER_PATH%\VBS\Выделить следующие за выделенными.vbs"
UP
wcmicons.dll,18
Выделить предшествующие выделенным


-1
Аватара пользователя
Джорж
Сообщения: 10
Зарегистрирован: Чт фев 02, 2012 22:50
Откуда: Sankt-Peterburg

Сообщение Джорж »

sa писал(а):пригодится вот такой скрипт:
Пока не работает.
Сохранил скрипт как .vbs, запустил PowerPro 4.8p и открыл .vbs с пом. PowerPro.Script (C:\PROGRA~1\PowerPro.exe *Script RunFile %1)

На другой панели выделил перед этим свой 001.jpg
Вроде по инструкции делал ,а получил только кучу предупреждений, кот лень тут все выкладывать. Вот первые:
Изображение Изображение Изображение Изображение Изображение Изображение
Че делать дальше?
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Джорж писал(а):Пока не работает.
Для работы приведённого скрипта не требуется PowerPro.
Дополнительно необходимо только скачать и зарегистрировать ActiveX-компонент http://wincmd.ru/plugring/script_helper.html WSH Helper for TC (автор Volniy) размером 36 килобайт.
Аватара пользователя
Джорж
Сообщения: 10
Зарегистрирован: Чт фев 02, 2012 22:50
Откуда: Sankt-Peterburg

Сообщение Джорж »

На работе нет инета. Как я его зарегистрирую?
Я признателен всем, кто говорил мне «нет»: благодаря им я делал все сам.
У. Дайер
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Джорж писал(а):Как я его зарегистрирую?
Из справки к Script Helper ActiveX for Total Commander:
Установка и удаление
~~~~~~~~~~~~~~~~~~~~

Для установки и регистрации в системе:
просто запустите TCWSHelp.exe с командной строкой
TCWSHelp.exe /REGSERVER

Важно!
При перемещении в другую папку нужно повторить регистрацию!

Для дерегистрации и удаления:
запустите TCWSHelp.exe со следующей командной строкой
TCWSHelp.exe /UNREGSERVER
затем удалите и сам файл
Джорж писал(а):Че делать дальше?
Чтобы использовать кнопки один к одному, нужно код скрипта скопировать и сохранить в файл Выделить следующие за выделенными.vbs, поместить этот файл в папку VBS в каталоге TC. Код каждой кнопки скопировать и вставить через контекстное меню в панель инструментов TC.
Файлы jpg должны быть выделены не на другой панели, а на активной.
Аватара пользователя
Джорж
Сообщения: 10
Зарегистрирован: Чт фев 02, 2012 22:50
Откуда: Sankt-Peterburg

Сообщение Джорж »

Извини(те) что поздно, sa, но у меня вместо выполнения скрипта опять какая-то хрень выскакивает:
Изображение
Запускаю C:\Program Files\TC UP\VBS\Выделить следующие за выделенными.vbs с помощью wscript.exe v5.6.0.8820

Непонятно должен ли работать в это время Script Helper, т.к. после выполнения "C:\Program Files\TC UP\WSH\TCWSHelp.exe" /REGSERVER этой программы нет в списке задач. TCWSHelp.exe работает только пока не закроешь окошко:
Изображение
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Джорж
Попробуй зарегистрировать.
TCWSHelp - это не утилита, а компонент. Его достаточно выполнить (зарегистрировать) один раз и закрыть информационное окно.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Джорж
Возможно, нарушена ассоциация на файлы с расширением .vbs (могло произойти при экспериментах с загрузкой VBS-файлов в PowerPro).
Для восстановления ассоциации попробуй в командной строке тотала ввести

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

ASSOC .VBS=VBSFile
и нажать Shift+Enter. Затем надо закрыть окно DOS-программы и проверить работу предлагавшейся кнопки.
Ответить