Массовая переименовка... (CTRL+M)

Форум о самом популярном файловом менеджере Total Commander

Сообщение Ti-Mac » Сб апр 24, 2004 7:08 am

Недавно столкнулся с такой задачей, решения так и не нашёл. Короче
объясняю на примере:

Даны 3 файла с разной длиной имён, например:

1one01
2nine02
3Three03

Требуется оставить имя, начиная со второго символа (удаляем первую
ненужную цифру), до 3-его символа с конца (удаляем 2 последние цифры
у каждого файла)

Конечно это можно сделать в несколько действий, а как за одну
команду? Спасибо!
<span style='color:blue'>Formating C: .................98%</span>
<span style='color:red'>Fatal Error:</span> <span style='color:blue'>found Windows</span>
Ti-Mac
Капитан
 
Сообщений: 168
Зарегистрирован: Вс апр 18, 2004 8:18 am
Откуда: Кемерово
Пункты репутации: 0

Сообщение Volniy » Сб апр 24, 2004 9:49 am

Написать умный регексп. Изображение Вот тебе самый простой
В секции Поиск с Заменой ставишь Найти \d Заменить на <пусто> и включаешь Regexp. Но этот только с твоими примерными именами сработает, а для общего случая нужно более серьезный регексп придумать. Вот и думай, чай не на субботнике сегодня корячишься, как мы тут все, в Беларуси Изображение
Volniy
Ст. лейтенант
 
Сообщений: 121
Зарегистрирован: Сб ноя 22, 2003 11:42 pm
Пункты репутации: 0

Сообщение Ti-Mac » Сб апр 24, 2004 5:50 pm

2Volniy

Вот именно меня интересует общий случай.
То есть как задать интервал от символа с начала имени до
определённого символа с конца.

А с цифрами я и сам знаю (\d, \D - инверт)
<span style='color:blue'>Formating C: .................98%</span>
<span style='color:red'>Fatal Error:</span> <span style='color:blue'>found Windows</span>
Ti-Mac
Капитан
 
Сообщений: 168
Зарегистрирован: Вс апр 18, 2004 8:18 am
Откуда: Кемерово
Пункты репутации: 0

Сообщение Bastion » Сб апр 24, 2004 7:08 pm

2Ti-Mac
Гы! Я такие штуки батником делаю. Берешь названия файлов в word выравнивешь по левому краю потом выделяешь с клавишей ALT столбец - удаляешь. Выравниваешь по правому краю и таже операция с конца. потом делаешь табличку и вставляешь столбец с иходным названием и столбец с командой ren, преобразуешь в текст и сохраняешь в тхт с расширением *.bat

Блин писал дольше чем проворачваю эту операцию. Да! имена файлов через dir > в *.txt и убрать лишнее...

В общем базовая идея: выровнить с одного края и удалить столбец, затем выровнить с другого и удалить столбец
Bastion
Генерал-майор
 
Сообщений: 2617
Зарегистрирован: Чт май 30, 2002 10:21 am
Пункты репутации: 0

Сообщение Volniy » Сб апр 24, 2004 8:34 pm

2Ti-Mac

Я не большой спец в этих регесповских делах, но если у тебя уж и впрям не выходит, то напиши тогда такую штуку в Найти

\d{1}(.*)\d{2}(\.*)

И вот такую в Заменить

$1$2

Это IMHO будет твой случай (в смысле общий).
Или я не прав?Изображение
Volniy
Ст. лейтенант
 
Сообщений: 121
Зарегистрирован: Сб ноя 22, 2003 11:42 pm
Пункты репутации: 0

Сообщение panda » Сб апр 24, 2004 9:59 pm

2Bastion
я тоже ;)
не в ворде, но не суть важно.
<div align="center">Панды занесены в Книгу рекордов Гиннеса как самые привлекательные из редких животных</div>
panda
Генерал-майор
 
Сообщений: 2459
Зарегистрирован: Вс авг 10, 2003 7:35 pm
Откуда: Владивосток
Пункты репутации: 0

Сообщение Ti-Mac » Вс апр 25, 2004 9:07 am

2Bastion
2JOhn

НУ вы даёте! Блин, в жизни бы не догадался... Ворд и ещё там что-то, да
какого хрена этого Тотал делать не умеет. Просто бы задать интервал, а
не париться со всякими регексами, да тем более со сторонними прогами.

2Volniy

Чо то не пашет твоя регексина. Может я просто чего-то не
допонимаю. Может подкинешь какую-нить ссылочку на регулярки, вещь
смотрю мощная, а пользоваться не умею.
<span style='color:blue'>Formating C: .................98%</span>
<span style='color:red'>Fatal Error:</span> <span style='color:blue'>found Windows</span>
Ti-Mac
Капитан
 
Сообщений: 168
Зарегистрирован: Вс апр 18, 2004 8:18 am
Откуда: Кемерово
Пункты репутации: 0

Сообщение Volniy » Вс апр 25, 2004 9:56 am

<!--QuoteBegin-Ti-Mac+Apr 25 2004, 12:07--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>Цитата (Ti-Mac @ Apr 25 2004, 12:07)</td></tr><tr><td id='QUOTE'><!--QuoteEBegin-->
Чо то не пашет твоя регексина. Может я просто чего-то не
допонимаю. Может подкинешь какую-нить ссылочку на регулярки, вещь смотрю мощная, а пользоваться не умею.<!--QuoteEnd--></td></tr></table><div class='postcolor'><!--QuoteEEnd-->
Если ты все правильно сделал, то будет работать (я непроверенной инфы не даю).
А правильно это значит:
1) Не трогать поля 'Маска переименования:' Имя (оставить только [N]) и Расширение (оставить только [E])
2) Поставить галочку на RegEx, убрать с Subst
3) Остальное, как я описывал раньше

Что касается инфы о регекспах, то мне пока хватило и справки TC. А вообще наиболее верный способ это обратиться к первоисточнику (что касательно регекспов в TC): <a href='http://regexpstudio.com/' target='_blank'>http://regexpstudio.com/</a>.

Вот немного измененный вариант регекспа поиска, думаю он немножко корректнее будет предыдущего (я же только учусь Изображение )

\d{1}(.+)\d{2}(.*)

Расшифровка этой регэкспы:
Найти текст, в котором сначала идет одна цифра \d{1}, потом некий блок текста(.+), состоящий хотя бы из одного символа, после возможен(!) второй блок текста (.*). Заменить весь этот текст на объединение двух блоков из найденной строки $1$2 (если нет расширения у файла, то второй блок будет пуст).

А чегой-та я за тебя тут думаю? Изображение
Давай-ка сам подтягивайся.
Volniy
Ст. лейтенант
 
Сообщений: 121
Зарегистрирован: Сб ноя 22, 2003 11:42 pm
Пункты репутации: 0

Сообщение Ti-Mac » Вс апр 25, 2004 10:51 am

2Volniy

Ну ты меня и озадачил!!! Короче немного по другому ставлю вопрос:

Как убрать несколько символов с конца, если имена имеют разную длину?
(начальные можно легко убрать параметром N[#-#])

У тебя в коде только для цифр, вот мой вариант

заменить
(\w|\s){2}(\.(.)*)$

на
"Пусто"

Короче удаляет 2 символа с конца имени (до расширения).
<span style='color:blue'>Formating C: .................98%</span>
<span style='color:red'>Fatal Error:</span> <span style='color:blue'>found Windows</span>
Ti-Mac
Капитан
 
Сообщений: 168
Зарегистрирован: Вс апр 18, 2004 8:18 am
Откуда: Кемерово
Пункты репутации: 0

Сообщение Volniy » Вс апр 25, 2004 12:19 pm

<!--QuoteBegin-Ti-Mac+Apr 24 2004, 10:08--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>Цитата (Ti-Mac @ Apr 24 2004, 10:08)</td></tr><tr><td id='QUOTE'><!--QuoteEBegin-->Даны 3 файла с разной длиной имён, например:
1one01
2nine02
3Three03
Требуется оставить имя, начиная со второго символа (удаляем первую ненужную цифру), до 3-его символа с конца (удаляем 2 последние цифры у каждого файла)
<!--QuoteEnd--></td></tr></table><div class='postcolor'><!--QuoteEEnd-->
Я плохо вижу, что-ли? Ты хочешь конкретного ответа, на вопрос, который никак не можешь даже для себя сформулировать. Регекспы - это раздел программирования, а в программировании все должно быть точно. Ты, пожалуйста, будь по-конкретней. Будут тогда и конкретные ответы, я так думаю.

BTW Твой вариант не будет работать с файлами без расширений и не будет работать, если удалить надо нелатинские символы в конце имени (\w подразумевает, что буквы английские, так что лучше вместо него использовать точку). А для чего |\s у тебя? Два разделителя слов ищещь? Зачем?
Volniy
Ст. лейтенант
 
Сообщений: 121
Зарегистрирован: Сб ноя 22, 2003 11:42 pm
Пункты репутации: 0

Сообщение Ti-Mac » Вс апр 25, 2004 12:56 pm

2Volniy

<!--QuoteBegin--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>Цитата </td></tr><tr><td id='QUOTE'><!--QuoteEBegin-->Я плохо вижу, что-ли? Ты хочешь конкретного ответа, на вопрос, который никак не можешь даже для себя сформулировать.<!--QuoteEnd--></td></tr></table><div class='postcolor'><!--QuoteEEnd-->

Я же сказал мне нужен общий случай. А ты мне опять про цифры. Тут главная
заморочка как удалить конечные символы. Ладно, пусть их будет 2 (для точности). А на первые внимания не обращай.

<!--QuoteBegin--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>Цитата </td></tr><tr><td id='QUOTE'><!--QuoteEBegin-->А для чего |\s у тебя? Два разделителя слов ищещь? Зачем?<!--QuoteEnd--></td></tr></table><div class='postcolor'><!--QuoteEEnd-->

В смысле 2 разделителя? Просто учитываю тот факт, что в конце имени могут быть пробелы. А на счёт не латинских букв ты прав. Для этого надо добавить ещё |[а-Я], но тогда не будут работать спец символы. Хорошо, ставлю точку

(.){2}(\.(.)*)$

С именами вроде всё нормально, а вот расширения после переименования пропадают если заменять на "пусто". Как быть?
<span style='color:blue'>Formating C: .................98%</span>
<span style='color:red'>Fatal Error:</span> <span style='color:blue'>found Windows</span>
Ti-Mac
Капитан
 
Сообщений: 168
Зарегистрирован: Вс апр 18, 2004 8:18 am
Откуда: Кемерово
Пункты репутации: 0

Сообщение Volniy » Вс апр 25, 2004 3:47 pm

А этот вариант чем не устраивает?

Найти

^.{1}(.+).{2}\.(.*)

Заменить на

$1.$2

Просто это не сработает при отсутсвии расширения, но я так понял (тебя разве поймешь, ты же про расширения толком не говоришь), что тебе это неважно.

А на счет пробелов я тебя опять не понял. Ты что, пробел не считаешь за символ? Ошибаешься, однако :) Сколько у тебя еще таких карт в рукаве?
Volniy
Ст. лейтенант
 
Сообщений: 121
Зарегистрирован: Сб ноя 22, 2003 11:42 pm
Пункты репутации: 0

Сообщение Ti-Mac » Вс апр 25, 2004 4:15 pm

Короче у меня вот что получилось

Схема для сохранения

Найти: (.){n}(\.(.)+)$ "n-число символов с конца"
заменить: $2

* для файлов без разрешений не пройдёт (хотя это ни к чему)

<!--QuoteBegin--></div><table border='0' align='center' width='95%' cellpadding='3' cellspacing='1'><tr><td>Цитата </td></tr><tr><td id='QUOTE'><!--QuoteEBegin-->А на счет пробелов я тебя опять не понял. Ты что, пробел не считаешь за символ?<!--QuoteEnd--></td></tr></table><div class='postcolor'><!--QuoteEEnd-->
Нет я просто про точку забыл и стал перечислять по порядку все возможные
виды символов

....

Ну вот твой код вроде тоже работает! Исчерпывающий ответ. Изображение
<span style='color:blue'>Formating C: .................98%</span>
<span style='color:red'>Fatal Error:</span> <span style='color:blue'>found Windows</span>
Ti-Mac
Капитан
 
Сообщений: 168
Зарегистрирован: Вс апр 18, 2004 8:18 am
Откуда: Кемерово
Пункты репутации: 0

Сообщение Magister » Пн апр 26, 2004 8:51 am

[N-30-3] - переименовать, убрав 2 символа с конца. Вместо 30 - число заведомо превышающее длину имени.
[N2-] - переименовать, убрав 1 символ с начала.
<!--sizeo:1--><span style="font-size:8pt;line-height:100%"><!--/sizeo--><!--coloro:red--><span style="color:red"><!--/coloro-->все беды - от недостатка информации<!--sizec--></span><!--/sizec--><!--colorc--></span><!--/colorc-->
Magister
Генерал-майор
 
Сообщений: 2501
Зарегистрирован: Вт авг 06, 2002 4:22 am
Пункты репутации: 0

Сообщение Ti-Mac » Пн апр 26, 2004 10:51 am

2Magister

Ты где был раньше? Мы тут чуть не перегрызлись!
<span style='color:blue'>Formating C: .................98%</span>
<span style='color:red'>Fatal Error:</span> <span style='color:blue'>found Windows</span>
Ti-Mac
Капитан
 
Сообщений: 168
Зарегистрирован: Вс апр 18, 2004 8:18 am
Откуда: Кемерово
Пункты репутации: 0

След.

Вернуться в Total Commander

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

cron