1

Тема: CMD/BAT: транслитерация текста

translit.bat

@echo off 
chcp 1251>nul 
set "word=%*"
set "word=%word:а=a%"
SET "word=%word:б=b%"
SET "word=%word:в=v%"
SET "word=%word:г=g%" 
SET "word=%word:д=d%"
SET "word=%word:е=e%"
SET "word=%word:ё=jo%" 
SET "word=%word:ж=zh%" 
SET "word=%word:з=z%" 
SET "word=%word:и=i%" 
SET "word=%word:й=j%" 
SET "word=%word:к=k%" 
SET "word=%word:л=l%" 
SET "word=%word:м=m%" 
SET "word=%word:н=n%" 
SET "word=%word:о=o%" 
SET "word=%word:п=p%" 
SET "word=%word:р=r%" 
SET "word=%word:с=s%" 
SET "word=%word:т=t%" 
SET "word=%word:у=u%" 
SET "word=%word:ф=f%" 
SET "word=%word:х=h%"
SET "word=%word:ц=ts%" 
SET "word=%word:ч=ch%" 
SET "word=%word:ш=sh%" 
SET "word=%word:щ=sch%" 
SET "word=%word:ъ="%" 
SET "word=%word:ы=y%" 
SET "word=%word:ь=`%" 
SET "word=%word:э=e%" 
SET "word=%word:ю=ju%" 
SET "word=%word:я=ja%" 

echo %word%

запуск

TRANSLIT.bat [текст для перевода] [>транслит.txt]

2 (изменено: kiber_punk, 2008-10-31 00:47:26)

Re: CMD/BAT: транслитерация текста

Доработка. С поддержкой транслитерации файлов.
translator.bat

@echo off 
if "%*"=="" goto :eof
if not exist %1 goto istext

setlocal  enabledelayedexpansion
for /f "delims=" %%a in (%1) do (
    set words=%%a
    set words=!words:а=a!
    set words=!words:б=b!
    set words=!words:в=v!
    set words=!words:г=g!
    set words=!words:д=d!
    set words=!words:е=e!
    set words=!words:ё=jo!
    set words=!words:ж=zh!
    set words=!words:з=z!
    set words=!words:и=i!
    set words=!words:й=j!
    set words=!words:к=k!
    set words=!words:л=l!
    set words=!words:м=m!
    set words=!words:н=n!
    set words=!words:о=o!
    set words=!words:п=p!
    set words=!words:р=r!
    set words=!words:с=s!
    set words=!words:т=t!
    set words=!words:у=u!
    set words=!words:ф=f!
    set words=!words:х=h!
    set words=!words:ц=ts!
    set words=!words:ч=ch!
    set words=!words:ш=sh!
    set words=!words:щ=sch!
    set words=!words:ъ=''!
    set words=!words:ы=i!
    set words=!words:ь='!
    set words=!words:э=eh!
    set words=!words:ю=ju!
    set words=!words:я=ja!

    echo !words!
)
endlocal

exit /b

:istext
set word=%*
set word=%word:а=a%
SET word=%word:б=b%
SET word=%word:в=v%
SET word=%word:г=g% 
SET word=%word:д=d%
SET word=%word:е=e%
SET word=%word:ё=jo% 
SET word=%word:ж=zh% 
SET word=%word:з=z% 
SET word=%word:и=i% 
SET word=%word:й=j% 
SET word=%word:к=k% 
SET word=%word:л=l% 
SET word=%word:м=m% 
SET word=%word:н=n% 
SET word=%word:о=o% 
SET word=%word:п=p% 
SET word=%word:р=r% 
SET word=%word:с=s% 
SET word=%word:т=t% 
SET word=%word:у=u% 
SET word=%word:ф=f% 
SET word=%word:х=h%
SET word=%word:ц=ts% 
SET word=%word:ч=ch% 
SET word=%word:ш=sh% 
SET word=%word:щ=sch%
SET word=%word:ъ="% 
SET word=%word:ы=y% 
SET word=%word:ь=`% 
SET word=%word:э=e% 
SET word=%word:ю=ju% 
SET word=%word:я=ja%

echo %word%

запуск для обработки файла:

TRANSLATOR [text.txt] [>translit.txt]

запуск для обработки строки:

TRANSLATOR [строка для перевода]  [>translit.txt]

__
Спасибо alexii за помощь в разработке скрипта.

3

Re: CMD/BAT: транслитерация текста

+ возможность интерактивного ввода текста
+ более лаконичный код

@chcp 1251>nul
@echo off 
if "%*"=="" set /p word=Введи текст:  &&goto 2
if not exist %1 goto 1

for /f "delims=" %%a in (%1) do set word=%%a & call :2
exit /b

:1
set word=%*
:2
set word=%word:а=a%
SET word=%word:б=b%
SET word=%word:в=v%
SET word=%word:г=g% 
SET word=%word:д=d%
SET word=%word:е=e%
SET word=%word:ё=jo% 
SET word=%word:ж=zh% 
SET word=%word:з=z% 
SET word=%word:и=i% 
SET word=%word:й=j% 
SET word=%word:к=k% 
SET word=%word:л=l% 
SET word=%word:м=m% 
SET word=%word:н=n% 
SET word=%word:о=o% 
SET word=%word:п=p% 
SET word=%word:р=r% 
SET word=%word:с=s% 
SET word=%word:т=t% 
SET word=%word:у=u% 
SET word=%word:ф=f% 
SET word=%word:х=h%
SET word=%word:ц=ts% 
SET word=%word:ч=ch% 
SET word=%word:ш=sh% 
SET word=%word:щ=sch%
SET word=%word:ъ="% 
SET word=%word:ы=y% 
SET word=%word:ь=`% 
SET word=%word:э=e% 
SET word=%word:ю=ju% 
SET word=%word:я=ja%

echo %word%

::pause