| 
 
	
		| 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: 2974
 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: 2229
 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: 2229
 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: 2229
 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: 10443
 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: 10443
 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
 
 |