@Echo offcls@rem@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++"@rem " Bat-файл 'prc-AND.bat' "@rem " "@rem "Обработка текущей строки 'string' запроса из файла "@rem "'stages.txt', которая содержит логический(ие) "@rem "оператор(ы) 'AND' (И). "@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. из строки запроса 'string' вида "@rem "radar{2} AND polari{2} AND (X-band){10} "@rem "формируются следующие строки: "@rem "radar;2 "@rem "polari;2 "@rem "X-band;10 "@rem "Здесь в первом столбце - искомые термины и слова, "@rem "а '2' и '10' - номера полей БД, в которых эти термины"@rem "(слова) ищутся. "@rem sed "s/ */ /g" <string >temp\zua01sed "s/AND/\r\n/g" <temp\zua01 >temp\zua02sed "s/^ *//" <temp\zua02 >temp\zua03sed "s/{/;{/g" <temp\zua03 >temp\zua04sed "s/[{}()\x22\x93\x94\xAB\xBB]//g;s/$/\r/" <temp\zua04 >temp\zua05@rem @rem "~~~~~~~~~~~~~~~~~~~~ НАЧАЛО ЦИКЛА ~~~~~~~~~~~~~~~~~~~"@rem @rem "ЦИКЛ по строкам файла 'temp\zua05' "@rem @rem "Например, для строки 'radar;2' из 2-го поля БД "@rem "('Название публикации') текущего файла 'currdb' "@rem "извлекаются записи, содержащие термин 'radar'. "@rem @rem "В результате ЦИКЛА формируется обновленный "@rem "файл 'currdb'. "@rem FOR /F "delims=" %%i IN (temp\zua05) DO (echo %%i>temp\zua06cut -f2 -d; <temp\zua06 >temp\zua07tr -d " [:alpha:][:punct:]" <temp\zua07 >temp\zua08sed "s/^\(.*\)$/cut -f1,\1 <currdb >temp\\zua10/" <temp\zua08 >ztmp1.batCALL ztmp1.batcut -f1 -d; <temp\zua06 >temp\zua11fgrep -i -f temp\zua11 <temp\zua10 >temp\zua12cut -f1 <temp\zua12 >temp\zua13sed "s/$/\t\r/" <temp\zua13 >temp\zua14fgrep -i -f temp\zua14 <currdb >temp\zua15copy /Y temp\zua15 currdb >null)@rem "~~~~~~~~~~~~~~~~~~ ОКОНЧАНИЕ ЦИКЛА ~~~~~~~~~~~~~~~~~~"@rem @rem "Выводим число найденных записей. "@rem sed -n "$=" <currdb >temp\zua16set Size=0set Files=temp\zua16for %%F in (%Files%) do if /i %%~zF EQU %Size% del /f %%Fif exist temp\zua16 goto METKA1echo ЏгЎ«ЁЄ жЁ© Ґ ©¤Ґ® >temp\zua18echo >notfoundgoto METKA2:METKA1sed "s/^\(.*\)$/Ќ ©¤Ґ® ЇгЎ«ЁЄ жЁ©: \1\r/" <temp\zua16 >temp\zua17crecode -wd temp\zua17 temp\zua18cls:METKA2clstype num_stringtype temp\zua18if not exist notfound echo Џа®¬Ґ¦гв®зл© аҐ§г«мв в § ЇЁб ў Ї ЇЄг 'stgs'nircmd wait 2000@rem @rem -------------------------------------------------------:CLEAN@rem "Удаление временных файлов "@rem if exist num_string del /Q num_stringif exist null del /Q nullif exist temp\zua* del /Q temp\zua*if exist ztmp1.bat del /Q ztmp1.bat@rem @rem -------------------------------------------------------@rem "Выход из bat-файла. ":END