Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах

Модерирует : KLASS, IFkO

vu1tur (14-11-2006 16:59): http://forum.ru-board.com/topic.cgi?forum=62&topic=9040  Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

   

Kirillhome



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору


Код:
 
@echo off
setlocal enabledelayedexpansion  
 
rem Собственно - сама искомая строка
set isk_str="Дом, милый дом"
 
if exist ok.tmp del /q ok.tmp
set /a fl_osh_simv=0
 
set all_simv= #$'()*+,-./0$123456789:;=?@ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюяЁё
set simv_z=╨Р   ╨С   ╨Т   ╨У   ╨Ф   ╨Х   ╨Ц   ╨Ч   ╨Ш   ╨Щ   ╨Ъ   ╨Ы   ╨Ь   ╨Э   ╨Ю   ╨Я   ╨а   ╨б   ╨в   ╨г   ╨д   ╨е   ╨ж   ╨з   ╨и   ╨й   ╨к   ╨л   ╨м   ╨н   ╨о   ╨п   ╨░   ╨▒   ╨▓   ╨│   ╨┤   ╨╡   ╨╢   ╨╖   ╨╕   ╨╣   ╨║   ╨╗   ╨╝   ╨╜   ╨╛   ╨┐   ╤А   ╤Б   ╤В   ╤Г   ╤Д   ╤Е   ╤Ж   ╤З   ╤И   ╤Й   ╤К   ╤Л   ╤М   ╤Н   ╤О   ╤П   ╨Б   ╤С
rem        А    Б    В    Г    Д    Е    Ж    З    И    Й    К    Л    М    Н    О    П    Р    С    Т    У    Ф    Х    Ц    Ч    Ш    Щ    Ъ    Ы    Ь    Э    Ю    Я    а    б    в    г    д    е    ж    з    и    й    к    л    м    н    о    п    р    с    т    у    ф    х    ц    ч    ш    щ    ъ    ы    ь    э    ю    я    Ё    ё
 
set /A max_len_str=700
rem Выясняем длину (с допуском, что вся строка не превышает 700 символов)
:_vyasn_dl_str
set /A max_len_str=%max_len_str%-1
set new_str=!isk_str:~0,%max_len_str%!
if !new_str!==!isk_str! goto _vyasn_dl_str
set /A max_len_str=%max_len_str%-1
 
set /A max_len_dop=700
rem Выясняем длину поиска (с допуском, что вся строка не превышает 700 символов)
:_vyasn_dl_dop
set /A max_len_dop=%max_len_dop%-1
set new_str=!all_simv:~0,%max_len_dop%!
if !new_str!==!all_simv! goto _vyasn_dl_dop
 
set /A max_len_neizm=%max_len_dop%
rem Выясняем длину "неизменной части" (с допуском, что вся строка не превышает 700 символов)
:_vyasn_dl_neizm
set /A max_len_neizm=%max_len_neizm%-1
set new_str=!all_simv:~%max_len_neizm%,1!
if !new_str!==А goto _vyx_izm_dl
goto _vyasn_dl_neizm
:_vyx_izm_dl
set /A max_len_neizm=%max_len_neizm%
 
rem Убрали кавычки
set new_str=!isk_str:~1,%max_len_str%!
 
rem начали поиски соответствий...
set /A max_len_str=%max_len_str%-1
set str_pois=
for /l %%a in (0,1,%max_len_str%) do (
    set tek_simv=!new_str:~%%a,1!
    set /a fl_osh_simv=1
    for /l %%b in (0,1,%max_len_dop%) do (
        set simv_sravn=!all_simv:~%%b,1!
        if !tek_simv!==!simv_sravn! (
           set /a fl_osh_simv=0
           if %%b LSS %max_len_neizm% (
              set str_pois=!str_pois!!tek_simv!
           ) else (
              set /A polog_zam=%%b-%max_len_neizm%
              set /A polog_zam=5*!polog_zam!
              call :zam !polog_zam!
           )
        )  
    )
    if !fl_osh_simv!==1 (
       echo Символ !tek_simv! не допустим для поиска... Увы
       exit /b)
)
 
rem Собственно, поиск
find /c "%str_pois%" test.tmp | find /c ": 0" > f.tmp
for /f %%i in (f.tmp) do if %%i==0 echo ok > ok.tmp
del /q f.tmp
exit /b
 
:zam nom_simv
rem Собственно, замены для русского алфавита...
if "!simv_z:~4,1!" NEQ " " (
   set str_pois=!str_pois!!simv_z:~%1,5!) else (
   if "!simv_z:~3,1!" NEQ " " (
      set str_pois=!str_pois!!simv_z:~%1,4!) else (
      if "!simv_z:~2,1!" NEQ " " (
         set str_pois=!str_pois!!simv_z:~%1,3!) else (
         if "!simv_z:~1,1!" NEQ " " (
            set str_pois=!str_pois!!simv_z:~%1,2!) else (
            set str_pois=!str_pois!!simv_z:~%1,1!
         )
      )
   )
)
exit /b
 


Всего записей: 426 | Зарегистр. 23-11-2004 | Отправлено: 02:22 18-08-2006 | Исправлено: Kirillhome, 02:58 18-08-2006
   

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Задачи на bat-файлах
vu1tur (14-11-2006 16:59): http://forum.ru-board.com/topic.cgi?forum=62&topic=9040


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru