View previous topic :: View next topic |
Author |
Message |
Brnandman
Joined: 14 Sep 2008 Posts: 12
|
(Separately) Posted: Sun Sep 14, 2008 17:51 Post subject: Переименование с периодическим сбросом счётчика |
|
|
Поиском нахожу необходимые файлы лежащие в разных директориях, выделяю, вызываю multi-rename tool. Нужно переименовать этот список файлов с использованием счетчика. Как сделать так, чтобы счетчик сбрасывался при переходе в новую директорию?
например я нашел и хочу переименовать файлы:
Code: | c:\new\photo.jpg
c:\new\photo3.jpg
c:\old\photo.jpg
c:\old\photo3.jpg |
если использовать маску "photo[C1+1:2]", то получим
Code: | c:\new\photo01.jpg
c:\new\photo02.jpg
c:\old\photo03.jpg
c:\old\photo04.jpg |
а мне нужно
Code: | c:\new\photo01.jpg
c:\new\photo02.jpg
c:\old\photo01.jpg
c:\old\photo02.jpg |
|
|
Back to top |
|
|
D1P
Joined: 20 Dec 2004 Posts: 2973 Location: Тбилиси
|
(Separately) Posted: Sun Sep 14, 2008 17:59 Post subject: |
|
|
Имя каталога в MRT само по себе не учитывается.
Как вариант - можно найти (написать?) плагин, выдающий разные результаты в зависимости от пути файла, и использовать его в MRT. Есть или нет конкретно такой плагин - мне не известно.
Если задача разовая, проще, по-моему, пройтись по каталогам, переименовыввая файлы в каждом отдельно. _________________ База знаний о Total Commander
Блог |
|
Back to top |
|
|
Вахмурка
Joined: 27 Dec 2004 Posts: 2586 Location: Большая деревня Москва
|
(Separately) Posted: Sun Sep 14, 2008 18:05 Post subject: |
|
|
Первое, что пришло в голову - нельзя. Но попробуй поиграться с ключом [P] - имя родительской директории. Если твоя задача вообще как-то решается, то никак без [P] не обойтись. Кстати, [G] - имя "дедушкиной" (grandpa) директории. Поиграйся с [P], тем более что результат можно увидеть заранее, без переименования как такового. _________________ Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон) |
|
Back to top |
|
|
Brnandman
Joined: 14 Sep 2008 Posts: 12
|
(Separately) Posted: Mon Sep 15, 2008 15:11 Post subject: |
|
|
задача не разовая, плагина тоже такого не нашел
игры с [P] и [G] ни к чему не привели, насквозь нумерует файлы и все тут |
|
Back to top |
|
|
Batya
Joined: 15 Dec 2004 Posts: 2221 Location: Москва, Россия
|
(Separately) Posted: Mon Sep 15, 2008 17:33 Post subject: |
|
|
Сделал скрипт для ScriptContentPlugin, который можно использовать в MRT. При этом текущий счетчик и текущая папка хранятся в реестре. Получилось очень медленно и в общем случае криво.
Brnandman
Лучше сделать скрипт, который сам переименовывает выделенные файлы.
Нужна именно маска вида "photo[C1+1:2]"? Т. е. одинаковый префикс для всех файлов, а далее без разделителя двухзначное число?
Опиши более детально требования для переименования. _________________ Нет, я не сплю. Я просто медленно моргаю. |
|
Back to top |
|
|
Brnandman
Joined: 14 Sep 2008 Posts: 12
|
(Separately) Posted: Mon Sep 15, 2008 23:55 Post subject: |
|
|
сейчас переименовываю вручную с маской
[G]-[P]-picture-[C]
где [C] - трехзначное число
в будущем такое переименование и нужно.
Спасибо всем откликнувшимся |
|
Back to top |
|
|
Batya
Joined: 15 Dec 2004 Posts: 2221 Location: Москва, Россия
|
(Separately) Posted: Tue Sep 16, 2008 18:02 Post subject: |
|
|
Brnandman
vbs-скрипт:
Code: | '======================================================================
' Переименование выделенных файлов по маске
' [G]-[P]-{заданное слово}-[C]
' где [P] - имя родительской папки,
' [G] - имя папки на 2 уровня вверх ("дедушка"),
' [С] - отдельный счетчик для каждого [P].
' При этом расширение файлов не меняется.
'
' Параметры вызова из TC:
' %L
'======================================================================
Option Explicit
'======== Изменяемые параметры ========================================
' Заданное слово для маски переименования
Const GeneralWord = "picture"
' Разделитель в маске
Const Delimiter = "-"
' Разрядность счетчика в маске
Const Precision = 3
'======================================================================
Dim Mess, FSO, FileList, F, P, PF, G, Ext, NewName, NewPath
Dim Errors, Counter
SetMess
Set FSO = CreateObject("Scripting.FileSystemObject")
Set Errors = CreateObject("Scripting.Dictionary")
Set Counter = CreateObject("Scripting.Dictionary")
CheckParam
For Each F In Split(FSO.OpenTextFile(FileList, 1, False).ReadAll, vbNewLine)
F = Trim(F)
If F <> "" Then
If FSO.FileExists(F) Then
Ext = "." & FSO.GetExtensionName(F)
PF = FSO.GetParentFolderName(F)
P = FSO.GetBaseName(PF)
G = FSO.GetBaseName(FSO.GetParentFolderName(PF))
If Not Counter.Exists(PF) Then
Counter.Add PF, 1
Else
Counter(PF) = Counter(PF) + 1
End If
NewName = G & Delimiter & P & Delimiter & GeneralWord & Delimiter & Num(Counter(PF), Precision) & Ext
NewPath = PF & "\" & NewName
On Error Resume Next
FSO.MoveFile F, NewPath
If Err.Number > 0 Then
Errors.Add F & " -> " & NewName, vbNewLine & Err.Description
End If
On Error GoTo 0
End If
End If
Next
If Errors.Count > 0 Then
MessBox JoinErr(Errors), 2
Else
MessBox Mess(3), 3
End If
Quit
Function Num(pC, pPrecision)
Num = Right(String(pPrecision, "0") & pC, pPrecision)
End Function
Sub CheckParam
If WScript.Arguments.Count = 0 Then
MessBox Mess(1), 1
Quit
End If
FileList = WScript.Arguments(0)
If Not FSO.FileExists(FileList) Then
MessBox Mess(2), 1
Quit
End If
End Sub
Sub SetMess
Set Mess = CreateObject("Scripting.Dictionary")
Mess.Add 0, "Переименование по маске"
Mess.Add 1, "Не указаны параметры!"
Mess.Add 2, "Входной параметр не является файлом!"
Mess.Add 3, "Операция завершена."
Mess.Add 4, "Операция завершена с ошибками." & vbNewLine
Mess.Add 5, "Невозможно выполнить переименование:" & vbNewLine
End Sub
Function JoinErr(pDic)
Dim lKey
For Each lKey In pDic
JoinErr = JoinErr & vbNewLine & vbNewLine & Mess(5) & _
lKey & pDic(lKey)
Next
JoinErr = Mess(4) & JoinErr
End Function
Function MessBox(pMess, pMode)
Dim lIcon
Select Case pMode
Case 1 lIcon = vbCritical + vbOKOnly
Case 2 lIcon = vbExclamation + vbOKOnly
Case 3 lIcon = vbInformation + vbOKOnly
End Select
MessBox = MsgBox(pMess, lIcon, Mess(0))
End Function
Sub Quit
Set Counter = Nothing
Set Errors = Nothing
Set FSO = Nothing
Wscript.Quit
End Sub |
_________________ Нет, я не сплю. Я просто медленно моргаю.
Last edited by Batya on Sat Sep 20, 2008 01:41; edited 1 time in total |
|
Back to top |
|
|
Brnandman
Joined: 14 Sep 2008 Posts: 12
|
(Separately) Posted: Fri Sep 19, 2008 19:29 Post subject: |
|
|
Batya
переименовывает верно, спасибо
но на каждый файл мне выдает окна:
1)путь к файлу
2)имя P
3)имя G
итого на 10 файлов я получаю 30 окон с сообщениями этими и кнопкой "ok"
может я что-то не так делаю? |
|
Back to top |
|
|
Batya
Joined: 15 Dec 2004 Posts: 2221 Location: Москва, Россия
|
(Separately) Posted: Sat Sep 20, 2008 01:40 Post subject: |
|
|
Brnandman
Гы-гы
Отладочные строки забыл убрать
Исправил исходный скрипт. _________________ Нет, я не сплю. Я просто медленно моргаю. |
|
Back to top |
|
|
Brnandman
Joined: 14 Sep 2008 Posts: 12
|
(Separately) Posted: Sat Sep 20, 2008 10:43 Post subject: |
|
|
Batya
Спасибо!
Существенно проще, чем ручками |
|
Back to top |
|
|
slideray
Joined: 28 Jun 2010 Posts: 115
|
(Separately) Posted: Thu Apr 12, 2012 06:42 Post subject: Счетчик с предельным значением |
|
|
возможно ли задать такой счетчик в мультипереименовании, что бы при достижении определенного значения обнулялся до первоначального значения?
например:
начать счет с 4-ёх, досчитать до 15-ти, снова начать считать с 4-ёх... |
|
Back to top |
|
|
Avada
Joined: 01 Aug 2008 Posts: 10352 Location: Россия, Саратов
|
(Separately) Posted: Thu Apr 12, 2012 07:06 Post subject: |
|
|
slideray
В стандартном инструменте TC — нет. _________________ Даже самая богатая фантазия
Не представит себе наши безобразия. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
|
Back to top |
|
|
Avada
Joined: 01 Aug 2008 Posts: 10352 Location: Россия, Саратов
|
(Separately) Posted: Thu Apr 12, 2012 11:57 Post subject: |
|
|
Тема объединена с имеющейся. Материал целевой темы, не имевший отношения с счётчику, вынесен в отдельную тему Переименование HTML по заданному фрагменту текста. Соответственно, текущей теме дан другой заголовок. _________________ Даже самая богатая фантазия
Не представит себе наши безобразия. |
|
Back to top |
|
|
BeardFury78
Joined: 25 Aug 2016 Posts: 213
|
(Separately) Posted: Wed Aug 31, 2016 10:02 Post subject: Нумерация файлов со сбросом при переходе на следующую папку |
|
|
Здравствуйте, может этот вопрос уже не один раз задавали на форуме, но я лично не нашел... Так вот, суть темы в том, что необходимо произвести нумерацию файлов в подпапках, в данном случае оно должно быть в виде 0001имяфайла.расширение-0999имяфайла.расширение, сами же папки вмещают у себя только 999 файлов, при переходе на следующие папки счетчик нумерации должен сбрасываться до 0001. Но я не нашел способов как это добиться средством Тотала. Возможно то, что сами папки вмещают у себя только фиксированное кол-ство файлов (999 ед.), этому как-то поможет? Может быть нужна какая-то регулярка в ИГП? Например, регулярка именует по счетчику первые 999 выделенных файлов в результате панели поиска, а затем сбрасывает нумерацию при обработке 1000-1998 файлов и так далее... Прошу очень помощи у тех, кто разбирается в Тотале! |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|