@Echo offcls@rem @rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++"@rem " Bat-файл 'prc-NOT.bat' "@rem " "@rem "Обработка текущей строки 'string' запроса из файла "@rem "'stages.txt', которая содержит логический оператор "@rem "'NOT' (НЕ) "@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 "NOT DSD{2,10,12} "@rem "формируется строка: "@rem "DSD;2,10,12 "@rem "Здесь в первом столбце - искомый термин "@rem "(слово, словосочетание, аббревиатура), "@rem "а '2', '10' и '12' - номера полей БД, в которых "@rem "этот термин (слово, словосочетание, аббревиатура) "@rem "ищется "@rem sed "s/ */ /g" <string >temp\zud01sed "s/^NOT //" <temp\zud01 >temp\zud02sed "s/{/;{/g;s/$/\r/" <temp\zud02 >temp\zud03sed "s/[{}()\x22\x93\x94\xAB\xBB]//g" <temp\zud03 >temp\zud04sed "s/$/\r/" <temp\zud04 >temp\zud05@rem @rem -------------------------------------------------------@rem "Из файла 'currdb' с текущей выборкой из БД, "@rem "(в которой 14 полей) извлекается 1-ое поле "@rem "(порядковый номер) и все отмеченные поля N-ое "@rem "(в данном примере - 2, 10, и 12-е) базы данных. "@rem "Формируется файл 'temp\zud08' "@rem cut -f2 -d; <temp\zud05 >temp\zud06tr -d " [:alpha:]" <temp\zud06 >temp\zud07sed "s/^\(.*\)$/cut -f1,\1 <currdb >temp\\zud08\r/" <temp\zud07 >ztmp6.batCALL ztmp6.bat@rem @rem -------------------------------------------------------@rem "Из файла 'temp\zud08' удаляются все записи, "@rem "содержащие выбранный термин; в данном примере "@rem "- аббревиатуру 'DSD' "@rem cut -f1 -d; <temp\zud05 >temp\zud09sed "s/^\(.*\)$/fgrep -i \x22\1\x22 -v <temp\\zud08 >temp\\zud11\r/" <temp\zud09 >ztmp7.batCALL ztmp7.bat@rem @rem -------------------------------------------------------@rem "Обновляем текущий файл 'currdb' "@rem cut -f1 <temp\zud11 >temp\zud12sed "s/$/\t\r/" <temp\zud12 >temp\zud13fgrep -i -f temp\zud13 <currdb >temp\zud14copy /Y temp\zud14 currdb >null@rem @rem -------------------------------------------------------@rem "Выводим число найденных записей "@rem sed -n "$=" <currdb >temp\zud15set Size=0set Files=temp\zud15for %%F in (%Files%) do if /i %%~zF EQU %Size% del /f %%Fif exist temp\zud15 goto METKA1echo ЏгЎ«ЁЄ жЁ© Ґ ©¤Ґ® >temp\zud17echo >notfoundgoto METKA2:METKA1sed "s/^\(.*\)$/Ќ ©¤Ґ® ЇгЎ«ЁЄ жЁ©: \1\r/" <temp\zud15 >temp\zud16crecode -wd temp\zud16 temp\zud17cls:METKA2clstype num_stringtype temp\zud17if 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\zud* del /Q temp\zud*if exist ztmp6.bat del /Q ztmp6.batif exist ztmp7.bat del /Q ztmp7.bat@rem @rem -------------------------------------------------------@rem "Выход из bat-файла ":END