Страница 12 из 52
Добавлено: Пн окт 15, 2012 20:16
kin369
Avada
___Перед созданием темы просматривал форум, и "базу знаний", и книгу про ТК. Пробовал примерять приведённые там примеры и на их основе делать свои маски - не получилось(первый опыт с рег. выражениями, до сих пор обходилось без них). Пока не смог разобраться с применением спецсимволов... Глядя на ответ задачи, вижу, что в своём случае не доставил круглых скобок(ну и кое-что ещё) - при случае буду изучать дальше.
Batya
___Спасибо за помощь!
Добавлено: Пн окт 22, 2012 04:17
Iori
Пытаюсь сделать кнопку которая сразу переименовывает несколько фаилов или папок в такой вид.
ДО:
любой файл
После:
_любой файл
Пока сделал вот такую кнопку, но она только работает с одним файлом или с одной папкой.
Код: Выделить всё
TOTALCMD#BAR#DATA
cmd /c
ren %N _%N
shell32.dll,134
Rename Folders / Files Under Cursor into _FileName
1
-1
[/b]
Добавлено: Пн окт 22, 2012 05:13
Serge Yolkin
Проверять ломает - спать хочу, но, вроде, должно работать
Добавлено: Пн окт 22, 2012 05:20
Iori
Serge Yolkin,
Делал уже такое. Меняет только один файл, но не больше.
Так-же пробовал ren "%S" "_%S", тоже самое.
Добавлено: Пн окт 22, 2012 09:15
Serge Yolkin
Ну, да. Правильно. Не будет. Очень спать хочу. Батник надо прикручивать. Или скрипт. Принимать %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>
Добавлено: Пн окт 22, 2012 12:09
Flasher
Iori
Код: Выделить всё
TOTALCMD#BAR#DATA
%ComSpec% /c for /f "delims=" %i in
('type %WF') do ren "%%i" "_%%i""
wcmicons.dll,46
Добавить знак подчёркивания спереди имён выделенных файлов
1
Добавлено: Пн окт 22, 2012 21:25
Iori
Serge Yolkin
Не мучайтесь идите спать
Flasher
Спасибо! То что надо, но есть одно но. Кнопка работает отлично с файлами, но ничего не делает с папками.
EDIT:
И ещё, можно ли дороботать кнопку так, что бы она обратно переименовывала файлы и папки при нажатие на кнопку второй раз.
Один раз нажимаем на кнопку, получаем:
любой файл --> _любой файл
Второй раз нажимаем на кнопку, получаем:
_любой файл --> любой файл
Добавлено: Пн окт 22, 2012 23:14
Serge Yolkin
Iori
Да я уже выспался...
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>
Особенность: если выделены файлы и на "_", и без - скрипт проинвертирует имена, т.е. те файлы, имена которых начинались на _ станут без подчерка, и наоборот.
Добавлено: Пн окт 22, 2012 23:32
Iori
Serge Yolkin
Спасибо вам за скрипт, но я предпочитаю либо батник либо напрямую через кнопку. На работе компьютеры не разрешают запускать скрипты.

[/b]
Добавлено: Вт окт 23, 2012 00:03
Serge Yolkin
Iori
Вы бы проверили на работе такой способ запуска:
обычно сисадмины себе такую лазейку оставляют. А я бы батники перед скриптами запретил - навредить ими можно не хуже (как минимум), а писать не сложнее...
Добавлено: Вт окт 23, 2012 14:47
sa
Iori
Хотелось бы уточнить: неужели вызов кнопкой (команда MULTIRENAME с именем шаблона) тоталовского инструмента группового переименования и последующее нажатие двух клавиш (Enter и Esc) представляет такую трудность или будет использоваться настолько часто, что непременно требует автоматизации (с трёх нажатий до одного)?
Добавлено: Вт окт 23, 2012 19:45
Iori
sa,
Про multirename я знаю, но хотелось бы кнопку.

Как говорится, каждому своё. [/b]
Добавлено: Вт окт 23, 2012 21:38
sa
Iori писал(а):но хотелось бы кнопку
Знакомо: я тоже завёл себе когда-то скрипт, который вызывает пользовательскую команду для выполнения группового переименования по шаблону и посылает нажатия {Enter} и {ESC}.
Добавлено: Ср окт 24, 2012 02:51
Serge Yolkin
Немного не в тему, но вот скрипт, упрощенные версии которого я предлагал выше (принимает параметр %S)
Код: Выделить всё
<?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 и выполняем скрипт.
Добавлено: Вс окт 28, 2012 00:01
Iori
Serge Yolkin
Сегодня попробовал ваш скрипт на роботе. Как я и думал, админы перекрыли это дело и скирт не запустился.
Поэтому просьба кнопки ещё в силе.
Кнопка Flasher-а роботает хорошо, но она не меняет папки и не переводит названия файлов и папок обратно.