Sinclair83
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Errrrr987654321 Цитата: Это ваша утилита? Может есть смысл её сразу сделать "как положено"? | Да. Переписал. Теперь есть как прямая транслитерация (Ru -> En), так и обратная (En -> Ru). Но... чтобы она имела хоть какое-то практическое применение добавил возможность переименовывать отмеченные файлы/папки (не знал что кому-нибудь пригодится). В связи с этим категорически не рекомендую переводить из En в Ru и обратно файлы/каталоги которые содержат смешанные буквы (русские + английские), а также файлы/каталоги которые не были до этого обработаны по ГОСТУ. Так как можно получить неожиданный результат. Иными словами корректно вернуть прежнее имя удастся только тогда, когда оно было переведено из Ru в En. И то... есть оговорка. С мягким и твёрдым знаками засада получается. Не реально распознать их первоначальный регистр (после преобразования будет утрачен - всегда строчные). Вот пример неадыкватного преобразования: допустим имеем папку "MSOCache". Если произвести сейчас обратное преобразование, то получим "МСОЦаче". Сначала заменяются буквы-буквосочетания, а потом что осталось. В данном случае ch = ч. Если же теперь попытаться перевести обратно из Ru в En, то на выходе получим уже "MSOCzache", вмест исходного имени "MSOCache". Ц превратилась в Cz, так как следующая за ней буква не равна ни одной из следующих: I, Е, Y, J. Всё как рекомендовано по ссылке Ну и "ч" соответственно была заменена на сочетание "ch" - здесь всё нормально. На переименование не оказывают никакого влияния ключи /P, /S и /R, потому что нет возможности распознать их при следущих преобразованиях. Ведь /P, /S = константы и должны оставаться в первозданном виде. Вышеуказанные ключи действительны только для результата в буфере обмена. Также, в связи с добавленной возможностью переименования файлов/папок теперь берётся в расчёт только имя файла(без расширения)/папки. Путь же, по которому они расположены остаётся неизменным, в отличии от предыдущей версии. Добавил несколько проверок "от дурака". Например, нельзя указывать пустые ключи /P:"" и /S:"". Изменения: /TR прямая транслитерация (En -> Ru) без переименования. Результат только в буфере. /TR+ то же что и предыдущий ключ + переименование файлов/папок. /TRR Reverse - обратная транслитерация (Ru -> En) без переименования. Результат только в буфере. /TRR+ то же что и предыдущий ключ + переименование файлов/папок. Очерёдность действий: Замена и смена регистра текста остались на своих местах(4, 5). Если также задан один из ключей /TRxx, то замену нужно планировать с учетом преобразования, то есть после оного. Так как нужно доставать только имя файла/папки (да ещё без учёт префикса/суффикса), то транслитерация "переместилась" в цикл построчного чтения файла-списка. Префикс/суффикс также в этом цикле, но добавляются после преобразования. Вроде ничего не забыл и достаточно подробно описал все изменения. Не знаю нужно ли это кому, но возможно какой-нить сервер принимает только латиницу. IMHO. Не рекомендую сразу же включать "боевой" режим работы. Сначала можно попробывать что-то типа такого: /P:"''" /S:"''" /L:"%L" /TR на "чисто русских" каталогах/файлах и посмотреть содержимое буфера. Свериться с ГОСТОм так сказать. Попробывать туда-сюда преобразовать. И если всё устроит, то тогда уже добавить "плюсик". Удачи! Ссылка |