Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Single Post  Topic: Групповое переименование в подкаталогах 
Author Message
sa



PostPosted: Tue Feb 07, 2012 17:54    Post subject: Reply with quote

Джорж wrote:
Надо опять искать и выделять файлы вручную.

Может быть, пригодится вот такой скрипт:
Code:
'----------------------------------------------------------------------------
'  Описание:  Выделить файлы и/или каталоги, следующие за выделенными,
'            либо предшествующие им. 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.
Кнопка для сдедующих:
Code:
TOTALCMD#BAR#DATA
"%COMMANDER_PATH%\VBS\Выделить следующие за выделенными.vbs"

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


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


-1
View user's profile Send private message


Powered by phpBB © 2001, 2005 phpBB Group