Де дикриатизация, и транслитерация, как добавка.

Начал перетягивать данные со старого блога и составленных своих файлов описаний. Даты где есть буду ставить как было, а из файлов по датам последнего изменения.

Поделюсь перекодировщиком написанным для Money, а в придачу приведу перекодировщик транслитератор для русского.

Проблема явилась когда меня попросили сделать в MoneyS3 экспорт данных в excel с последующей отправкой по почте. Пришлось решить две проблемы. Первая связана с тем, что как имя, так и путь могут содержать пробелы. А вторая что имя шаблона Money может содержать диакритику. Но именно эту самую диакритику не хотел принимать Thunderbird версии 2.0.0.21, когда получал имя файла который он должен был вложить в создаваемое письмо. Имя портилось файл не находился. Пришлось заниматься перекодировкой имени файла.

@echo off
setlocal
chcp 852 > nul
set log=%temp%\money-sendmail.log
rem set log=con:
date /t >> %log%
set to=%1
set subj=%2
set body=%3
set attachin=%4
rem
if not exist %attachin% (
@echo file - %attachin% not found
pause > nul
exit
)
rem
set "word=%ATTACHIN%"
set "word=%word:é=e%"
set "word=%word:É=E%"
set "word=%word:ě=e%"
set "word=%word:Ě=E%"
set "word=%word:ř=r%"
set "word=%word:Ř=R%"
set "word=%word:ž=z%"
set "word=%word:Ž=Z%"
set "word=%word:ú=u%"
set "word=%word:Ú=U%"
set "word=%word:ů=u%"
set "word=%word:Ů=U%"
set "word=%word:í=i%"
set "word=%word:Í=I%"
set "word=%word:á=a%"
set "word=%word:Á=A%"
set "word=%word:š=s%"
set "word=%word:Š=S%"
set "word=%word:ý=y%"
set "word=%word:Ý=Y%"
set "word=%word:č=c%"
set "word=%word:Č=C%"
rem if you want to replace spaces uncomment next line
rem set "word=%word: =_%"
set attach=%word%
rem
for /f "usebackq delims==" %%i in ('%attach%') do set attachpath=%%~dpi
for /f "usebackq delims==" %%i in ('%attach%') do set attachname=%%~ni
set attachmentfulldst=%temp%\%attachname%.xls
set attachmentfullsrc=%temp%\%attachname%.csv
rem
if exist "%attachmentfullsrc%" del /f "%attachmentfullsrc%" >> %log%
if exist "%attachmentfulldst%" del /f "%attachmentfulldst%" >> %log%
rem
@echo rename and move %attachin% "%attachmentfullsrc%" >> %log%
move %attachin% "%attachmentfullsrc%" >> %log%
rem rename %attachin% %attachpath%%attachname%.csv
rem
@echo c:\program files\lan consult\monexcel\convert.exe "%attachmentfullsrc%" >> %log%
"c:\program files\lan consult\monexcel\convert.exe" "%attachmentfullsrc%"
rem
@echo "c:\program files\mozilla thunderbird\thunderbird.exe" -compose to="%to%",subject="%subj%",body="%body%",attachment="file://%attachmentfulldst%" >> %log%
"c:\program files\mozilla thunderbird\thunderbird.exe" -compose to="%to%",subject="%subj%",body="%body%",attachment="file://%attachmentfulldst%"

Для русского языка транслитерация может быть выполнена следующим командным файлом
translitarate.cmd
@echo off
setlocal
chcp 1251 > nul
if "%*"=="" (
set /p word=Введите текст: &&goto 2
)
if not exist %1 goto :label1
for /f "delims=" %%a in (%1) do set word=%%a & call :label2
exit /b
:label1
set word=%*
:label2
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%

Использование:
translitarate.cmd text.txt [>translit.txt] translitarate.cmd строка для перевода [>translit.txt]
Понятное дело этот командник не для повседневного ручного использования. Он лишь пример и заготовка для использования функции подмены символов в пакетных заданиях.

Leave a Reply