| View previous topic :: View next topic   | 
	 
	
	
		| Author | 
		Message | 
	 
	
		Flasher
 
  
  Joined: 06 Nov 2009 Posts: 14229 Location: Москва
  | 
		
			
				  (Separately) Posted: Mon Nov 03, 2014 16:58    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				Роман BY
 
Можно сохранить шаблон и открывать окно с преднастройками по MULTIRENAME <operation name>. См. справку или тут.
 
Без диалога - уже нужен будет сценарий. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. | 
			 
		  | 
	 
	
		| Back to top | 
		 | 
	 
	
		  | 
	 
	
		helb
 
 
  Joined: 08 Oct 2014 Posts: 57
 
  | 
		
			
				  (Separately) Posted: Mon Nov 03, 2014 20:42    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				Часто требуется быстренько добавить префикс к именам группы файлов. Для того чтобы делать это быстрее чем встроенным групповым переименованием и не мусорить в его истории по-мелочам, а главное с именем файла под курсором в качестве шаблона. Выделяем нужное, опционально ставим курсор на файл, уже содержащий нужный текст, запускаем (к примеру, Ctrl+Shift+M), правим текст/вводим новый.
 
Можно добавлять как префикс так и суффикс, вместе и по отдельности — разделитель ‹:›
 
 
affix-rename.vbs:
 
 	  | Code: | 	 		  
 
'===============================================================
 
' Affix rename (by helb)
 
' Add prefix and/or suffix to each file/dir in a list (UTF-16 encoded): 
 
' ‘:’ — prefix-suffix separator (e.g. “:suffix” or “prefix:suffix”)
 
' Добавляет префикс и/или суффикс к каждому файлу/папке в списке
 
' ‘:’ — разделитель префикса и суффикса
 
'
 
' Parameters: <listfile (UTF-16)> [<suggestion>]
 
' Total Commander parameters: %WL "%O"
 
'===============================================================
 
Option Explicit 
 
dim FSO, F, fobj, name, prefix, suffix, list, confirmed
 
set FSO = CreateObject("Scripting.FileSystemObject") 
 
 
if WScript.Arguments.length = 0 then
 
   WScript.Echo("No parameters specified")
 
   WScript.Quit
 
end if
 
if FSO.FileExists(WScript.Arguments(0)) then
 
   List = WScript.Arguments(0)
 
else
 
   WScript.Echo("No list")
 
   WScript.Quit
 
end if
 
 
if WScript.Arguments(1) <> "" then name = WScript.Arguments(1)
 
name = InputBox("Enter affix (use ‘:’ to denote suffix)", "Rename", name)
 
if name = "" then WScript.Quit
 
 
name = Split(name, ":")
 
prefix = name(0)
 
if Ubound(name) < 1 then suffix = "" else suffix = name(1)
 
 
for each F in Split(FSO.OpenTextFile(List, 1, false, -1).ReadAll, vbNewLine)
 
   if F <> "" then
 
      set fobj = getObj(F)
 
      if not fobj is nothing then
 
         name = fobj.ParentFolder.Path & "\" & prefix & FSO.GetBaseName(F) & suffix & "." & FSO.GetExtensionName(F)
 
         if objExists(name) > 0 and confirmed = Empty then
 
            confirmed = MsgBox("Name conflict. Overwrite all? (“No” to skip all)" & vbCrLf & "Note: overwriting folders will delete contents", vbExclamation + vbYesNoCancel, "Confirm")
 
            if confirmed = vbCancel then exit for
 
         end if
 
         if objExists(name) > 0 and confirmed = vbYes or objExists(name) = 0 then
 
            if objExists(name) > 0 then getObj(name).Delete
 
            fobj.Move(name)
 
         end if
 
      end if
 
   end if
 
next
 
 
WScript.Quit
 
 
function getObj(fl)
 
   if FSO.FileExists(fl) then
 
      set getObj = FSO.GetFile(fl)
 
   elseif FSO.FolderExists(fl) then
 
      set getObj = FSO.GetFolder(fl)
 
   else
 
      set getObj = nothing
 
   end if
 
end function
 
 
'0=not exists, 1=is file, 2=is folder
 
function objExists(name)
 
   if FSO.FileExists(name) then 
 
      objExists = 1
 
   elseif FSO.FolderExists(name) then
 
      objExists = 2
 
   else
 
      objExists = 0
 
   end if
 
end function
 
 
function getNewName(name)
 
   if Right(name, Len(ext)) = ext then getNewName = Left(name, Len(name) - Len(ext)) else getNewName = name & ext
 
end function
 
  | 	 
  | 
			 
		  | 
	 
	
		| Back to top | 
		 | 
	 
	
		  | 
	 
	
		Pashak
 
 
  Joined: 12 Dec 2014 Posts: 1
 
  | 
		
			
				  (Separately) Posted: Fri Dec 12, 2014 17:15    Post subject: Групповое переименование | 
				     | 
			 
			
				
  | 
			 
			
				| Есть почти 40000 файлов, пример, Колобок БАБА 330.120 котился, нужно изменить - БАБА 330.120 Колобок котился. Возможно ли это? И (или) найти совпадения по цифрам. | 
			 
		  | 
	 
	
		| Back to top | 
		 | 
	 
	
		  | 
	 
	
		Flasher
 
  
  Joined: 06 Nov 2009 Posts: 14229 Location: Москва
  | 
		
			
				  (Separately) Posted: Fri Dec 12, 2014 18:47    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				Pashak
 
В справке ищем Подвыражения для поиска+замены.
 
Найти: (.*) (.*) (.*) (.*)
 
Заменить: $2 $3 $1 $4
 
[√] Рег. выраж. [√] Подстан. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. | 
			 
		  | 
	 
	
		| Back to top | 
		 | 
	 
	
		  | 
	 
	
		Iori
 
 
  Joined: 25 Apr 2012 Posts: 552
 
  | 
		
			
				  (Separately) Posted: Fri Feb 06, 2015 04:11    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				Добрый День,
 
 
Нужно чтобы выбранные папки или файлы содержали точки между словами где пробелы.
 
Исключение: отсутствие точки после скобки ( и [, и перед ) и ].
 
 
То есть:
 
из
 
Quick Screen Capture v2 2 0
 
в
 
Quick.Screen.Capture.v2.2.0
 
из
 
терминатор 2 судный день   (1991)   .avi
 
в
 
терминатор.2.судный.день.(1991).avi
 
из
 
 
 
Можно этого добится через инструмент группового переименования, но по мне скрипт в виде кнопки куда удобние.
 
 
Трудно будет такой сделать? | 
			 
		  | 
	 
	
		| Back to top | 
		 | 
	 
	
		  | 
	 
	
		Serge Yolkin
 
 
  Joined: 25 Jul 2009 Posts: 664
 
  | 
		
			
				  (Separately) Posted: Fri Feb 06, 2015 15:51    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				Для параметра %S: 	  | Code: | 	 		  <job>
 
  <object id="f" progid="Scripting.FileSystemObject" />
 
  <script type="text/jscript" language="JScript"><![CDATA[
 
    var a=WScript.Arguments,b,c='';
 
    for(var i=0;i<a.length;i++){
 
      if(f.fileExists(a(i)))b=f.getFile(a(i));
 
      else if(f.folderExists(a(i)))b=f.getFolder(a(i));
 
      b.name=a(i).replace(/\s+/g,'.');
 
    }
 
  ]]></script>
 
</job>  | 	  (формат .wsf) | 
			 
		  | 
	 
	
		| Back to top | 
		 | 
	 
	
		  | 
	 
	
		Iori
 
 
  Joined: 25 Apr 2012 Posts: 552
 
  | 
		
			
				  (Separately) Posted: Fri Feb 06, 2015 19:23    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				Serge Yolkin
 
 
Спасибо. 
 
 
Скрипт выдаёт ошибку.
 
 
Line 3
 
Char 2
 
Error: Synstax error
 
code: 800A03EA
 
Source Microsoft JScript compilation error. | 
			 
		  | 
	 
	
		| Back to top | 
		 | 
	 
	
		  | 
	 
	
		Serge Yolkin
 
 
  Joined: 25 Jul 2009 Posts: 664
 
  | 
		
			
				  (Separately) Posted: Mon Feb 09, 2015 19:09    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				Выдаёт.
 
Но не выдавал.
 
Попробую позже разобраться.
  Last edited by Serge Yolkin on Mon Feb 09, 2015 19:36; edited 1 time in total | 
			 
		  | 
	 
	
		| Back to top | 
		 | 
	 
	
		  | 
	 
	
		Flasher
 
  
  Joined: 06 Nov 2009 Posts: 14229 Location: Москва
  | 
		
			
				  (Separately) Posted: Mon Feb 09, 2015 19:13    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				Serge Yolkin
 
А как же исключения внутри скобок ([ * ]) ?
 
Для замены одного символа и регулярки не нужны... _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. | 
			 
		  | 
	 
	
		| Back to top | 
		 | 
	 
	
		  | 
	 
	
		Serge Yolkin
 
 
  Joined: 25 Jul 2009 Posts: 664
 
  | 
		
			
				  (Separately) Posted: Mon Feb 09, 2015 19:37    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				Flasher,
 
не, это я поторопился. Тут и парочка старых скриптов на ХР заглючили... | 
			 
		  | 
	 
	
		| Back to top | 
		 | 
	 
	
		  | 
	 
	
		Flasher
 
  
  Joined: 06 Nov 2009 Posts: 14229 Location: Москва
  | 
		
			
				  (Separately) Posted: Mon Feb 09, 2015 23:09    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				Serge Yolkin
 
Ладно, я чего-то подустал ждать.
 
 
Iori
 
 	  | Code: | 	 		  '============================== VBS =============================
 
' Переименовать выбранные элементы с помощью регулярных выражений
 
 
' Параметры: %WL <строка поиска> <строка замены>
 
' /i  —  ключ отключения зависимости от регистра
 
'================================================================
 
Option Explicit
 
Dim C, List, S, R, REx, F, N, IsFold, Ln, BN, Ext, Path, FN, i
 
With WSH.Arguments
 
  C = .UnNamed.Count : If C = 0 Then WSH.Quit
 
  If C <> 3 Then MsgBox "Следует указать 3 параметра!",_
 
  4144, Space(12) & "Ошибка вводных данных" : WSH.Quit
 
  List = .Item(0) : S = .Item(1) : R = .Item(2)
 
  C = .Named.Exists("i")
 
End With: Set REx = New RegExp: REx.Global = 1
 
REx.Pattern = S : If C Then REx.IgnoreCase = 1
 
 
With CreateObject("Scripting.FileSystemObject")
 
  Set List = .OpenTextFile(List,,,-1)
 
  Do : F = List.ReadLine : N = .GetFileName(F) : IsFold = Right(F, 1) = "\"
 
    If IsFold Then Ln = Len(F) - 1 : BN = N Else Ln = Len(F) :_
 
    BN = .GetBaseName(F) : Ext = .GetExtensionName(F) :_
 
    If Len(Ext) Then Ext = "." & Ext
 
    Path = "\\?\" & .GetParentFolderName(F) & "\"
 
    If Ln > 259 Then F = "\\?\" & F
 
    BN = REx.Replace(BN, R) : FN = BN & Ext : i = 0
 
    While (.FileExists(Path & FN) OR .FolderExists(Path & FN)) And FN <> N
 
    i = i + 1 : FN = BN & " (" & i & ")" & Ext : Wend : If FN <> N Then _
 
    If IsFold Then .GetFolder(F).Name = FN Else .GetFile(F).Name = FN
 
  Loop Until List.AtEndOfStream
 
End With : CreateObject("WScript.Shell").SendKeys "^r"  | 	  Параметры для запрошенного случая: %WL ([^\(|^\[])(\s+)((?!\)|\])) $1.$3
 
Строка поиска ещё может быть такой: ([^\(|^\[])(\s+)([^\)|^\]])
 
По числу символов одинаково, так что - без разницы. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
  Last edited by Flasher on Tue Feb 17, 2015 19:43; edited 2 times in total | 
			 
		  | 
	 
	
		| Back to top | 
		 | 
	 
	
		  | 
	 
	
		Iori
 
 
  Joined: 25 Apr 2012 Posts: 552
 
  | 
		
			
				  (Separately) Posted: Tue Feb 10, 2015 01:00    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				Flasher
 
 
Огромное Спасибо !!! Скрипт просто класс.
 
 
Я так понимаю что скрипт универсален, и его можно подогнать ко многим случаем. 
 
 
А как вы указали пробел в  	  | Code: | 	 		  ([^\(|^\[])(\s+)((?!\)|\]))  | 	  
 
А где можно почитать что это всё значит? А то у меня появилось несколько идей   | 
			 
		  | 
	 
	
		| Back to top | 
		 | 
	 
	
		  | 
	 
	
		Flasher
 
  
  Joined: 06 Nov 2009 Posts: 14229 Location: Москва
  | 
		
			
				  (Separately) Posted: Tue Feb 10, 2015 01:27    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				Iori
 
Пожалуйста.  
 
В общем-то, он универсален в рамках регекспов. Где о них почитать на форуме сообщалось многократно, в т.ч. и в этой теме. Да банально забить в гугле само понятие и посмотреть. Для составления полно сервисов: 1, 2, 3, 4 и т.д. Что касается работы с vbs/js, то самое неглядное пособие - это детище небезызвестного Шуры Асябрика (Tweak TС, TrashReg и т.д.). _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. | 
			 
		  | 
	 
	
		| Back to top | 
		 | 
	 
	
		  | 
	 
	
		Вахмурка
 
  
  Joined: 27 Dec 2004 Posts: 2586 Location: Большая деревня Москва
  | 
		 | 
	 
	
		| Back to top | 
		 | 
	 
	
		  | 
	 
	
		sa
 
 
  Joined: 29 Apr 2009 Posts: 2709
 
  | 
		
			
				  (Separately) Posted: Tue Feb 10, 2015 14:15    Post subject:  | 
				     | 
			 
			
				
  | 
			 
			
				 	  | Iori wrote: | 	 		  | в виде кнопки куда удобнее.  | 	  
 
Можно создать в тотале именованный шаблон группового переименования (в данном примере он назван  "Точки между словами, где пробелы") и применять его (для выбранных элементов) с помощью кнопки на TCFS2: 	  | Code: | 	 		  TOTALCMD#BAR#DATA
 
%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe /ef "set_ini(`%COMMANDER_PATH%\usercmd.ini`, em_temp, cmd,
 
`MULTIRENAME Точки между словами, где пробелы`) tem(em_temp) delay(500) send(`{ENTER}`, findwnd(`TMultiRename`)) delay(500) send(`{ESC}`, findwnd(`TMultiRename`))"
 
WCMICONS.DLL,46
 
Мультипереименовать по шаблону "Точки между словами, где пробелы"
 
 
 
-1
 
  | 	 
  | 
			 
		  | 
	 
	
		| 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 
 
		 |