Ykidia
Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору [code][/code]@echo off setlocal enableextensions enabledelayedexpansion REM :: TRIT - TRanslITerate, usage: trit "text" set "_allpar=" :MAIN_MERGE_PARAMETERS set _cmdpar=%1 REM :: Must keep one space after "%1"!!! set _allpar=%_allpar%%1 shift & if defined _cmdpar goto MAIN_MERGE_PARAMETERS set trit_string=%_allpar:~0,-2% set "trit_pre=_{@#" set "trit_post=#@}_" set trit_tbl=YE:Е Ye:Е ye:е YO:Ё Yo:Ё yo:ё YU:Ю Yu:Ю yu:ю YA:Я Ya:Я ya:я ^ JE:Е Je:Е je:е JO:Ё Jo:Ё jo:ё JU:Ю Ju:Ю ju:ю JA:Я Ja:Я ja:я ^ ZHY:ЖИ ZhY:ЖИ ZHy:Жи Zhy:Жи zhY:жИ zhy:жи KHY:ХЫ KhY:ХЫ KHy:Хы Khy:Хы khY:хЫ khy:хы ^ TSY:ЦЫ TsY:ЦЫ TSy:Цы Tsy:Цы tsY:цЫ tsy:цы SHCHY:ЩЫ ShchY:ЩЫ SHCHy:Щы Shchy:Щы shchY:щЫ shchy:щы ^ CHY:ЧЫ ChY:ЧЫ CHy:Чы Chy:Чы chY:чЫ chy:чы SHY:ШИ ShY:ШИ SHy:Ши Shy:Ши shY:шИ shy:ши ^ BY:БЫ By:Бы bY:бЫ by:бы VY:ВЫ Vy:Вы vY:вЫ vy:вы GY:ГЫ Gy:Гы gY:гЫ gy:гы DY:ДЫ Dy:Ды dY:дЫ dy:ды ^ ZY:ЗЫ Zy:Зы zY:зЫ zy:зы KY:КЫ Ky:Кы kY:кЫ ky:кы LY:ЛЫ Ly:Лы lY:лЫ ly:лы MY:МЫ My:Мы mY:мЫ my:мы ^ NY:НЫ Ny:Ны nY:нЫ ny:ны PY:ПЫ Py:Пы pY:пЫ py:пы RY:РЫ Ry:Ры rY:рЫ ry:ры SY:СЫ Sy:Сы sY:сЫ sy:сы ^ TY:ТЫ Ty:Ты tY:тЫ ty:ты FY:ФЫ Fy:Фы fY:фЫ fy:фы YY:ЫЙ Yy:Ый yY:ыЙ yy:ый EH:Э Eh:Э eh:э ^ A:А a:а E:Е e:е I:И i:и O:О o:о U:У u:у ZH:Ж Zh:Ж zh:ж KH:Х Kh:Х kh:х ^ TS:Ц Ts:Ц ts:ц SHCH:Щ Shch:Щ shch:щ CH:Ч Ch:Ч ch:ч SH:Ш Sh:Ш sh:ш ^ B:Б b:б V:В v:в G:Г g:г D:Д d:д Z:З z:з K:К k:к L:Л l:л ^ M:М m:м N:Н n:н P:П p:п R:Р r:р S:С s:с T:Т t:т F:Ф f:ф ^ H:Х h:х C:Ц c:ц W:В w:в Q:К q:к X:Кс x:кс Y:Й y:й ':ь ^ ЧЯ:ЧА Чя:Ча чЯ:чА чя:ча ЩЯ:ЩА Щя:Ща щЯ:щА щя:ща ЧЮ:ЧУ Чю:Чу чЮ:чУ чю:чу ЩЮ:ЩУ Щю:ЩУ щЮ:щу щю:щу call :FUNCTION_DISCLOSURE_QUOTES trit_string trit_string set "trit_string=!trit_string:"=ъ!" call :FUNCTION_TAG_BIG_LETTERS trit_string trit_string trit_pre trit_post for %%A in (%trit_tbl%) do ( for /f "tokens=1,2 delims=:" %%B in ("%%A") do ( set "trit_repl=%%B" call :FUNCTION_TAG_BIG_LETTERS trit_repl trit_repl trit_pre trit_post call set "trit_string=%%trit_string:!trit_repl!=%%C%%" ) ) echo !trit_string! goto :RETURN :FUNCTION_TAG_BIG_LETTERS REM ::************************************************************************* REM :: Function : Tag Big Letters REM :: Description : Tags big latin letters for case-sensitive operations REM :: On enter : %1 - source variable (with input string), REM :: : %2 - target variable (for output string), REM :: : %3 - prefix variable (with prefix string), REM :: : %4 - postfix variable (with postfix string) REM :: On return : output variable (%2) REM :: Used : _tagbl_input, _tagbl_index, _tagbl_result, _tagbl_letter REM ::************************************************************************* set "_tagbl_input=!%1!" set "_tagbl_index=0" set "_tagbl_output=" :FN_TAGBL_LOOP set _tagbl_letter=!_tagbl_input:~%_tagbl_index%,1! if not defined _tagbl_letter ( set %2=!_tagbl_output! goto :RETURN ) for %%Z in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) do ( if !_tagbl_letter!==%%Z ( set _tagbl_letter=!%3!!_tagbl_letter!!%4! goto :FN_TAGBL_BREAK ) ) :FN_TAGBL_BREAK set _tagbl_output=!_tagbl_output!!_tagbl_letter! set /a _tagbl_index+=1 goto :FN_TAGBL_LOOP :FUNCTION_DISCLOSURE_QUOTES REM ::*********************************************************************** REM :: Function : Disclosure Quotes REM :: Description : Deletes fringing double quotes REM :: On enter : %1 - source variable (with input string), REM :: : %2 - target variable (for output string) REM :: On return : output variable (%2) REM :: Used : _dcq_input, _str2disclosq_bquot, _str2disclosq_equot REM ::*********************************************************************** set "_dcq_input=!%1!" :FN_DCQ_LOOP set _dcq_bquot=!_dcq_input! set _dcq_bquot=!_dcq_bquot:~0,1! if !_dcq_bquot!==^" ( if !_dcq_bquot!==!_dcq_input:~-1! ( set _dcq_input=!_dcq_input:~1,-1! goto :FN_DCQ_LOOP ) ) set "%2=!_dcq_input!" goto :RETURN :RETURN endlocal |