Групповое переименование
Модераторы: d-view, Моторокер, Avada, CaptainFlint, Nik
Avada
___Перед созданием темы просматривал форум, и "базу знаний", и книгу про ТК. Пробовал примерять приведённые там примеры и на их основе делать свои маски - не получилось(первый опыт с рег. выражениями, до сих пор обходилось без них). Пока не смог разобраться с применением спецсимволов... Глядя на ответ задачи, вижу, что в своём случае не доставил круглых скобок(ну и кое-что ещё) - при случае буду изучать дальше.
Batya
___Спасибо за помощь!
___Перед созданием темы просматривал форум, и "базу знаний", и книгу про ТК. Пробовал примерять приведённые там примеры и на их основе делать свои маски - не получилось(первый опыт с рег. выражениями, до сих пор обходилось без них). Пока не смог разобраться с применением спецсимволов... Глядя на ответ задачи, вижу, что в своём случае не доставил круглых скобок(ну и кое-что ещё) - при случае буду изучать дальше.
Batya
___Спасибо за помощь!
Пытаюсь сделать кнопку которая сразу переименовывает несколько фаилов или папок в такой вид.
ДО: любой файл
После: _любой файл
Пока сделал вот такую кнопку, но она только работает с одним файлом или с одной папкой.
[/b]
ДО: любой файл
После: _любой файл
Пока сделал вот такую кнопку, но она только работает с одним файлом или с одной папкой.
Код: Выделить всё
TOTALCMD#BAR#DATA
cmd /c
ren %N _%N
shell32.dll,134
Rename Folders / Files Under Cursor into _FileName
1
-1
-
Serge Yolkin
- Сообщения: 664
- Зарегистрирован: Сб июл 25, 2009 11:12
Проверять ломает - спать хочу, но, вроде, должно работать
Код: Выделить всё
ren %S _%S-
Serge Yolkin
- Сообщения: 664
- Зарегистрирован: Сб июл 25, 2009 11:12
Ну, да. Правильно. Не будет. Очень спать хочу. Батник надо прикручивать. Или скрипт. Принимать %S и в цикле поочерёдно переименовывать. Например, rename.wsf:
Код: Выделить всё
<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>Iori
Код: Выделить всё
TOTALCMD#BAR#DATA
%ComSpec% /c for /f "delims=" %i in
('type %WF') do ren "%%i" "_%%i""
wcmicons.dll,46
Добавить знак подчёркивания спереди имён выделенных файлов
1Serge Yolkin
Не мучайтесь идите спать
Flasher
Спасибо! То что надо, но есть одно но. Кнопка работает отлично с файлами, но ничего не делает с папками.
EDIT:
И ещё, можно ли дороботать кнопку так, что бы она обратно переименовывала файлы и папки при нажатие на кнопку второй раз.
Один раз нажимаем на кнопку, получаем:
любой файл --> _любой файл
Второй раз нажимаем на кнопку, получаем:
_любой файл --> любой файл
Не мучайтесь идите спать
Flasher
Спасибо! То что надо, но есть одно но. Кнопка работает отлично с файлами, но ничего не делает с папками.
EDIT:
И ещё, можно ли дороботать кнопку так, что бы она обратно переименовывала файлы и папки при нажатие на кнопку второй раз.
Один раз нажимаем на кнопку, получаем:
любой файл --> _любой файл
Второй раз нажимаем на кнопку, получаем:
_любой файл --> любой файл
-
Serge Yolkin
- Сообщения: 664
- Зарегистрирован: Сб июл 25, 2009 11:12
Iori
Да я уже выспался...
ReReName.wsf, вызов [ReReName.wsf %S]Особенность: если выделены файлы и на "_", и без - скрипт проинвертирует имена, т.е. те файлы, имена которых начинались на _ станут без подчерка, и наоборот.
Да я уже выспался...
ReReName.wsf, вызов [ReReName.wsf %S]
Код: Выделить всё
<?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>-
Serge Yolkin
- Сообщения: 664
- Зарегистрирован: Сб июл 25, 2009 11:12
Iori
Вы бы проверили на работе такой способ запуска:обычно сисадмины себе такую лазейку оставляют. А я бы батники перед скриптами запретил - навредить ими можно не хуже (как минимум), а писать не сложнее...
Вы бы проверили на работе такой способ запуска:
Код: Выделить всё
wscript Диск:\Путь\КакойНибудьСкрипт.wsfIori
Хотелось бы уточнить: неужели вызов кнопкой (команда MULTIRENAME с именем шаблона) тоталовского инструмента группового переименования и последующее нажатие двух клавиш (Enter и Esc) представляет такую трудность или будет использоваться настолько часто, что непременно требует автоматизации (с трёх нажатий до одного)?
Хотелось бы уточнить: неужели вызов кнопкой (команда MULTIRENAME с именем шаблона) тоталовского инструмента группового переименования и последующее нажатие двух клавиш (Enter и Esc) представляет такую трудность или будет использоваться настолько часто, что непременно требует автоматизации (с трёх нажатий до одного)?
-
Serge Yolkin
- Сообщения: 664
- Зарегистрирован: Сб июл 25, 2009 11:12
Немного не в тему, но вот скрипт, упрощенные версии которого я предлагал выше (принимает параметр %S)Переименовывает файлы/папки добавляя (или убирая, если уже есть) расширение .bak. Особенности:
1. Допустим, есть два файла name и name.bak - скрипт поменяет их местами во всех трёх случаях: а). если передать ему name; б). если передать name.bak и в). если передать оба файла (двойного переименования не будет).
2. Допустим, есть папка name и файл name.bak - скрипту пофиг, где файл, а где папка, всё равно переименует (поменяет имена местами) и то, и другое.
Область применения - переточка проектов из нескольких связанных файлов, например, русификация (но не только). Если изменённые файлы/папки имеют неизменённые backup (bak) копии, можно быстро переключаться между двумя вариантами: выделяем файлы по расширению .bak и выполняем скрипт.
Код: Выделить всё
<?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>1. Допустим, есть два файла name и name.bak - скрипт поменяет их местами во всех трёх случаях: а). если передать ему name; б). если передать name.bak и в). если передать оба файла (двойного переименования не будет).
2. Допустим, есть папка name и файл name.bak - скрипту пофиг, где файл, а где папка, всё равно переименует (поменяет имена местами) и то, и другое.
Область применения - переточка проектов из нескольких связанных файлов, например, русификация (но не только). Если изменённые файлы/папки имеют неизменённые backup (bak) копии, можно быстро переключаться между двумя вариантами: выделяем файлы по расширению .bak и выполняем скрипт.