@Echo offcls@rem @rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++"@rem " Bat-файл 'prc-OR.bat' "@rem " "@rem "Обработка текущей строки 'string' запроса из файла "@rem "'stages.txt', которая содержит логический(ие) "@rem "оператор(ы) 'OR' (ИЛИ). "@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++"@rem@rem "Вход 1: файл 'string' со строкой из файла "@rem "'stages.txt'. "@rem@rem "Вход 2: файл 'currdb' с текущей выборкой из БД "@rem "'radar' журнальных публикаций ЭБ IEEE Xplore "@rem@rem "Выход: обновленный 'текущий' файл БД 'currdb' "@rem @rem =======================================================@rem if exist notfound goto CLEAN@rem type num_stringnircmd wait 1500@rem @rem -------------------------------------------------------@rem "Обрабатываем файл 'string': "@rem "1. множественные пробелы заменяются на одиночные; "@rem "2. удаляются пробелы в начале строки; "@rem "3. удаляются все кавычки; "@rem "4. Например, из строки вида "@rem "meteorol{10} OR (dual-polarization){12} OR (dual polarization){12}"@rem "формируются три строки: "@rem "meteorol;10 "@rem "dual-polarization;12 "@rem "dual polarization;12 "@rem "Здесь в первом поле, разделенном ";" - искомые "@rem "термины (слова, словосочетания, аббревиатуры), "@rem "а '10' и '12' - номера полей БД, в которых эти "@rem "термины ищутся "@rem sed "s/ */ /g" <string >temp\zub01sed "s/OR/\r\n/g" <temp\zub01 >temp\zub02sed "s/^ *//" <temp\zub02 >temp\zub03sed "s/{/;{/g" <temp\zub03 >temp\zub04sed "s/[{}()\x22\x93\x94\xAB\xBB]//g;s/$/\r/" <temp\zub04 >temp\zub05@rem @rem -------------------------------------------------------@rem "Строки сортируются по возрастанию по номеру поля БД "sort -k 2.1,2.2 -t; <temp\zub05 >temp\zub06@rem @rem -------------------------------------------------------@rem "Удаляются пробелы в конце строк, вставляются переносы"@rem "строк "sed "s/ *$//;s/$/\r/" <temp\zub06 >temp\zub07@rem @rem "~~~~~~~~~~~~~~~~~~~~ НАЧАЛО ЦИКЛА ~~~~~~~~~~~~~~~~~~~"@rem @rem "ЦИКЛ по строкам файла 'temp\zub07' "@rem @rem "Сначала из файла 'currdb' извлекаются записи, "@rem "содержащие в реферате (поле 10 БД 'radar') слово "@rem "'meteorol'. Затем из файла 'currdb' извлекаются "@rem "записи, содержащие термин 'dual-polarization' "@rem "в поле 12. После чего извлекаются записи, содержащие "@rem "термин 'dual polarization' в поле 12. "@rem "Полученные результаты поиска последовательно "@rem "записываются в файл 'temp\zub12' "@rem if exist temp\zub12 del /Q temp\zub12@rem FOR /F "delims=" %%i IN (temp\zub07) DO (echo %%i>temp\zub08cut -f1 -d; <temp\zub08 >temp\zub09cut -f2 -d; <temp\zub08 >temp\zub10sed "s/^\(.*\)$/cut -f1,\1 <currdb >temp\\zub11/" <temp\zub10 >ztmp2.batCALL ztmp2.batfgrep -f temp\zub09 -i <temp\zub11 >>temp\zub12)@rem "~~~~~~~~~~~~~~~~~~ ОКОНЧАНИЕ ЦИКЛА ~~~~~~~~~~~~~~~~~~"@rem @rem "'Суммарный' файл 'temp\zub12' подготавливается "@rem "к сортировке по порядковому номеру записи: "@rem "к номерам, меньшим 5-значного числа добавляется "@rem "необходимое число нулей "sed "/^\x22[0-9]\{1\}\t/s/\x22/\x220000/" <temp\zub12 >temp\zub13-1sed "/^\x22[0-9]\{2\}\t/s/\x22/\x22000/" <temp\zub13-1 >temp\zub13-2sed "/^\x22[0-9]\{3\}\t/s/\x22/\x2200/" <temp\zub13-2 >temp\zub13-3sed "/^\x22[0-9]\{4\}\t/s/\x22/\x220/" <temp\zub13-3 >temp\zub13-4@rem@rem -------------------------------------------------------@rem "Сортировка по 5-значному порядковому номеру "@rem "и удаление дубликатов записей. "@rem "5-значный номер объяснется максимальным числом "@rem "записей 28496 в БД 'radar' журнальных статей "cmsort /D /N=2,6 temp\zub13-4 temp\zub14clsnircmd wait 500@rem @rem "Удаление незначащих нулей в начале порядкового "@rem "номера "sed "s/^\x2200*/\x22/" <temp\zub14 >temp\zub15@rem@rem -------------------------------------------- @rem "Обновляем текущий файл 'currdb' "@rem cut -f1 <temp\zub15 >temp\zub16sed "s/$/\t\r/" <temp\zub16 >temp\zub17fgrep -f temp\zub17 <currdb >temp\zub18copy /Y temp\zub18 currdb >null@rem @rem -------------------------------------------------------@rem "Выводим число найденных записей "@rem sed -n "$=" <currdb >temp\zub19set Size=0set Files=temp\zub19for %%F in (%Files%) do if /i %%~zF EQU %Size% del /f %%Fif exist temp\zub19 goto METKA1echo ЏгЎ«ЁЄ жЁ© Ґ ©¤Ґ® >temp\zub21echo >notfoundgoto METKA2:METKA1sed "s/^\(.*\)$/Ќ ©¤Ґ® ЇгЎ«ЁЄ жЁ©: \1\r/" <temp\zub19 >temp\zub20crecode -wd temp\zub20 temp\zub21cls:METKA2clstype num_stringtype temp\zub21if not exist notfound echo Џа®¬Ґ¦гв®зл© аҐ§г«мв в § ЇЁб ў Ї ЇЄг 'stgs'nircmd wait 2000@rem @rem @rem -------------------------------------------------------:CLEAN@rem "Удаление временных файлов "@rem if exist num_string del /Q num_stringif exist null del /Q nullif exist temp\zub* del /Q temp\zub*if exist ztmp2.bat del /Q ztmp2.bat@rem @rem -------------------------------------------------------@rem "Выход из bat-файла ":END