@Echo off
cls
@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_string
nircmd 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\zua01
sed
"s/AND/\r\n/g"
<temp\zua01 >temp\zua02
sed
"s/^ *//"
<temp\zua02 >temp\zua03
sed
"s/{/;{/g"
<temp\zua03 >temp\zua04
sed
"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\zua06
cut
-f2 -d; <temp\zua06 >temp\zua07
tr
-d
" [:alpha:][:punct:]"
<temp\zua07 >temp\zua08
sed
"s/^\(.*\)$/cut -f1,\1 <currdb >temp\\zua10/"
<temp\zua08 >ztmp1.bat
CALL ztmp1.bat
cut
-f1 -d; <temp\zua06 >temp\zua11
fgrep
-i -f temp\zua11 <temp\zua10 >temp\zua12
cut
-f1 <temp\zua12 >temp\zua13
sed
"s/$/\t\r/"
<temp\zua13 >temp\zua14
fgrep
-i -f temp\zua14 <currdb >temp\zua15
copy /Y temp\zua15 currdb >null
)
@rem
"~~~~~~~~~~~~~~~~~~ ОКОНЧАНИЕ ЦИКЛА ~~~~~~~~~~~~~~~~~~"
@rem
@rem
"Выводим число найденных записей. "
@rem
sed
-n
"$="
<currdb >temp\zua16
set
Size=0
set
Files=temp\zua16
for
%%F
in
(%Files%)
do
if
/i %%~zF EQU %Size% del /f %%F
if
exist temp\zua16 goto METKA1
echo
ЏгЎ«ЁЄ жЁ© Ґ ©¤Ґ® >temp\zua18
echo
>notfound
goto METKA2
:METKA1
sed
"s/^\(.*\)$/Ќ ©¤Ґ® ЇгЎ«ЁЄ жЁ©: \1\r/"
<temp\zua16 >temp\zua17
crecode -wd temp\zua17 temp\zua18
cls
:METKA2
cls
type
num_string
type
temp\zua18
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\zua* del /Q temp\zua*
if
exist ztmp1.bat del /Q ztmp1.bat
@rem
@rem -------------------------------------------------------
@rem
"Выход из bat-файла. "
:END