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 

Групповое переименование
Goto page Previous  1, 2, 3 ... 11, 12, 13 ... 49, 50, 51  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
kin369



Joined: 23 Nov 2009
Posts: 9

Post (Separately) Posted: Mon Oct 15, 2012 20:16    Post subject: Reply with quote

Avada
___Перед созданием темы просматривал форум, и "базу знаний", и книгу про ТК. Пробовал примерять приведённые там примеры и на их основе делать свои маски - не получилось(первый опыт с рег. выражениями, до сих пор обходилось без них). Пока не смог разобраться с применением спецсимволов... Глядя на ответ задачи, вижу, что в своём случае не доставил круглых скобок(ну и кое-что ещё) - при случае буду изучать дальше.
Batya
___Спасибо за помощь!
Back to top
View user's profile Send private message
Iori



Joined: 25 Apr 2012
Posts: 552

Post (Separately) Posted: Mon Oct 22, 2012 04:17    Post subject: Reply with quote

Пытаюсь сделать кнопку которая сразу переименовывает несколько фаилов или папок в такой вид.

ДО: любой файл
После: _любой файл

Пока сделал вот такую кнопку, но она только работает с одним файлом или с одной папкой.

Code:

TOTALCMD#BAR#DATA
cmd /c
ren %N _%N
shell32.dll,134
Rename Folders / Files Under Cursor into _FileName

1
-1
[/b]
Back to top
View user's profile Send private message
Serge Yolkin



Joined: 25 Jul 2009
Posts: 664

Post (Separately) Posted: Mon Oct 22, 2012 05:13    Post subject: Reply with quote

Проверять ломает - спать хочу, но, вроде, должно работать
Code:
ren %S _%S
Back to top
View user's profile Send private message
Iori



Joined: 25 Apr 2012
Posts: 552

Post (Separately) Posted: Mon Oct 22, 2012 05:20    Post subject: Reply with quote

Serge Yolkin,

Делал уже такое. Меняет только один файл, но не больше.
Так-же пробовал ren "%S" "_%S", тоже самое.
Back to top
View user's profile Send private message
Serge Yolkin



Joined: 25 Jul 2009
Posts: 664

Post (Separately) Posted: Mon Oct 22, 2012 09:15    Post subject: Reply with quote

Ну, да. Правильно. Не будет. Очень спать хочу. Батник надо прикручивать. Или скрипт. Принимать %S и в цикле поочерёдно переименовывать. Например, rename.wsf:
Code:
<job id="clr" version="0.1">
  <object id="f" progid="Scripting.FileSystemObject" />
  <script type="text/jscript" language="JScript">
    for(var i=0;i<WScript.Arguments.length;i++){
      if(f.fileExists(WScript.Arguments(i))){
        f.getFile(WScript.Arguments(i)).name='_'+WScript.Arguments(i);
      }
    }
  </script>
</job>
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Mon Oct 22, 2012 12:09    Post subject: Reply with quote

Iori
Code:
TOTALCMD#BAR#DATA
%ComSpec% /c for /f "delims=" %i in
('type %WF') do ren "%%i" "_%%i""
wcmicons.dll,46
Добавить знак подчёркивания спереди имён выделенных файлов

1
Back to top
View user's profile Send private message
Iori



Joined: 25 Apr 2012
Posts: 552

Post (Separately) Posted: Mon Oct 22, 2012 21:25    Post subject: Reply with quote

Serge Yolkin
Не мучайтесь идите спать Very Happy

Flasher
Спасибо! То что надо, но есть одно но. Кнопка работает отлично с файлами, но ничего не делает с папками.

EDIT:
И ещё, можно ли дороботать кнопку так, что бы она обратно переименовывала файлы и папки при нажатие на кнопку второй раз.

Один раз нажимаем на кнопку, получаем:
любой файл --> _любой файл

Второй раз нажимаем на кнопку, получаем:
_любой файл --> любой файл
Back to top
View user's profile Send private message
Serge Yolkin



Joined: 25 Jul 2009
Posts: 664

Post (Separately) Posted: Mon Oct 22, 2012 23:14    Post subject: Reply with quote

Iori
Да я уже выспался...
ReReName.wsf, вызов [ReReName.wsf %S]
Code:
<?xml version="1.0" standalone="yes" encoding="utf-8"?>
<job id="rrn" version="0.1">
  <object id="f" progid="Scripting.FileSystemObject" />
  <script type="text/jscript" language="JScript"><![CDATA[
    for(var i=0;i<WScript.Arguments.length;i++){
      if(f.fileExists(WScript.Arguments(i))){
        if(f.getFile(WScript.Arguments(i)).name.substring(0,1)=='_'){
          f.getFile(WScript.Arguments(i)).name=
           WScript.Arguments(i).substring(1);
        }else f.getFile(WScript.Arguments(i)).name='_'+WScript.Arguments(i);
      }
    }
  ]]></script>
</job>
Особенность: если выделены файлы и на "_", и без - скрипт проинвертирует имена, т.е. те файлы, имена которых начинались на _ станут без подчерка, и наоборот.
Back to top
View user's profile Send private message
Iori



Joined: 25 Apr 2012
Posts: 552

Post (Separately) Posted: Mon Oct 22, 2012 23:32    Post subject: Reply with quote

Serge Yolkin

Спасибо вам за скрипт, но я предпочитаю либо батник либо напрямую через кнопку. На работе компьютеры не разрешают запускать скрипты. Sad [/b]
Back to top
View user's profile Send private message
Serge Yolkin



Joined: 25 Jul 2009
Posts: 664

Post (Separately) Posted: Tue Oct 23, 2012 00:03    Post subject: Reply with quote

Iori
Вы бы проверили на работе такой способ запуска:
Code:
wscript Диск:\Путь\КакойНибудьСкрипт.wsf
обычно сисадмины себе такую лазейку оставляют. А я бы батники перед скриптами запретил - навредить ими можно не хуже (как минимум), а писать не сложнее...
Back to top
View user's profile Send private message
sa



Joined: 29 Apr 2009
Posts: 2707

Post (Separately) Posted: Tue Oct 23, 2012 14:47    Post subject: Reply with quote

Iori
Хотелось бы уточнить: неужели вызов кнопкой (команда MULTIRENAME с именем шаблона) тоталовского инструмента группового переименования и последующее нажатие двух клавиш (Enter и Esc) представляет такую трудность или будет использоваться настолько часто, что непременно требует автоматизации (с трёх нажатий до одного)?
Back to top
View user's profile Send private message
Iori



Joined: 25 Apr 2012
Posts: 552

Post (Separately) Posted: Tue Oct 23, 2012 19:45    Post subject: Reply with quote

sa,

Про multirename я знаю, но хотелось бы кнопку. Smile
Как говорится, каждому своё. [/b]
Back to top
View user's profile Send private message
sa



Joined: 29 Apr 2009
Posts: 2707

Post (Separately) Posted: Tue Oct 23, 2012 21:38    Post subject: Reply with quote

Iori wrote:
но хотелось бы кнопку

Знакомо: я тоже завёл себе когда-то скрипт, который вызывает пользовательскую команду для выполнения группового переименования по шаблону и посылает нажатия {Enter} и {ESC}.
Back to top
View user's profile Send private message
Serge Yolkin



Joined: 25 Jul 2009
Posts: 664

Post (Separately) Posted: Wed Oct 24, 2012 02:51    Post subject: Reply with quote

Немного не в тему, но вот скрипт, упрощенные версии которого я предлагал выше (принимает параметр %S)
Code:
<?xml version="1.0" standalone="yes" encoding="utf-8"?>
<job id="ren" version="0.4">
  <object id="f" progid="Scripting.FileSystemObject" />
  <script type="text/jscript" language="JScript"><![CDATA[
    var n=[],o;
    for(var i=0;i<WScript.Arguments.length;i++){
      o=fo(WScript.Arguments(i));
      if(o&&fm(o))fr(o,fo(n[n.length-1]));
    }
    function fm(e){
      var t=fn(e);
      if(n.join('?').match(e.name))return false;
      else n[n.length]=t;
      return true;
    }
    function fn(e){
      var t=e.name;
      if(t.substring(t.length-4)=='.bak')return(t.substring(0,t.length-4));
      else return(t+'.bak');
    }
    function fo(e){
      if(f.fileExists(e))return(f.getFile(e));
      else if(f.folderExists(e))return(f.getFolder(e));
      else return false;
    }
    function fr(x,y){
      if(y){
        var r=Math.random(),t=x.name;
        x.name=r;
        y.name=t;
      }x.name=n[n.length-1];
    }
  ]]></script>
</job>
Переименовывает файлы/папки добавляя (или убирая, если уже есть) расширение .bak. Особенности:
1. Допустим, есть два файла name и name.bak - скрипт поменяет их местами во всех трёх случаях: а). если передать ему name; б). если передать name.bak и в). если передать оба файла (двойного переименования не будет).
2. Допустим, есть папка name и файл name.bak - скрипту пофиг, где файл, а где папка, всё равно переименует (поменяет имена местами) и то, и другое.
Область применения - переточка проектов из нескольких связанных файлов, например, русификация (но не только). Если изменённые файлы/папки имеют неизменённые backup (bak) копии, можно быстро переключаться между двумя вариантами: выделяем файлы по расширению .bak и выполняем скрипт.
Back to top
View user's profile Send private message
Iori



Joined: 25 Apr 2012
Posts: 552

Post (Separately) Posted: Sun Oct 28, 2012 00:01    Post subject: Reply with quote

Serge Yolkin

Сегодня попробовал ваш скрипт на роботе. Как я и думал, админы перекрыли это дело и скирт не запустился.

Поэтому просьба кнопки ещё в силе.

Кнопка Flasher-а роботает хорошо, но она не меняет папки и не переводит названия файлов и папок обратно.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander All times are GMT + 4 Hours
Goto page Previous  1, 2, 3 ... 11, 12, 13 ... 49, 50, 51  Next
Page 12 of 51

 
Jump to:  
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