@Echo off
cls
@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_string
nircmd 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\zud01
sed
"s/^NOT //"
<temp\zud01 >temp\zud02
sed
"s/{/;{/g;s/$/\r/"
<temp\zud02 >temp\zud03
sed
"s/[{}()\x22\x93\x94\xAB\xBB]//g"
<temp\zud03 >temp\zud04
sed
"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\zud06
tr
-d
" [:alpha:]"
<temp\zud06 >temp\zud07
sed
"s/^\(.*\)$/cut -f1,\1 <currdb >temp\\zud08\r/"
<temp\zud07 >ztmp6.bat
CALL ztmp6.bat
@rem
@rem -------------------------------------------------------
@rem
"Из файла 'temp\zud08' удаляются все записи, "
@rem
"содержащие выбранный термин; в данном примере "
@rem
"- аббревиатуру 'DSD' "
@rem
cut
-f1 -d; <temp\zud05 >temp\zud09
sed
"s/^\(.*\)$/fgrep -i \x22\1\x22 -v <temp\\zud08 >temp\\zud11\r/"
<temp\zud09 >ztmp7.bat
CALL ztmp7.bat
@rem
@rem -------------------------------------------------------
@rem
"Обновляем текущий файл 'currdb' "
@rem
cut
-f1 <temp\zud11 >temp\zud12
sed
"s/$/\t\r/"
<temp\zud12 >temp\zud13
fgrep
-i -f temp\zud13 <currdb >temp\zud14
copy /Y temp\zud14 currdb >null
@rem
@rem -------------------------------------------------------
@rem
"Выводим число найденных записей "
@rem
sed
-n
"$="
<currdb >temp\zud15
set
Size=0
set
Files=temp\zud15
for
%%F
in
(%Files%)
do
if
/i %%~zF EQU %Size% del /f %%F
if
exist temp\zud15 goto METKA1
echo
ЏгЎ«ЁЄ жЁ© Ґ ©¤Ґ® >temp\zud17
echo
>notfound
goto METKA2
:METKA1
sed
"s/^\(.*\)$/Ќ ©¤Ґ® ЇгЎ«ЁЄ жЁ©: \1\r/"
<temp\zud15 >temp\zud16
crecode -wd temp\zud16 temp\zud17
cls
:METKA2
cls
type
num_string
type
temp\zud17
if
not exist notfound
echo
Џа®¬Ґ¦гв®зл© аҐ§г«мв в § ЇЁб ў Ї ЇЄг
'stgs'
nircmd wait 2000
@rem
@rem -------------------------------------------------------
:CLEAN
@rem
"Удаление временных файлов "
@rem
if
exist num_string del /Q num_string
if
exist null del /Q null
if
exist temp\zud* del /Q temp\zud*
if
exist ztmp6.bat del /Q ztmp6.bat
if
exist ztmp7.bat del /Q ztmp7.bat
@rem
@rem -------------------------------------------------------
@rem
"Выход из bat-файла "
:END