@Echo off
cls
@rem
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem " Bat-файл '2_search-db-C.bat' "
@rem " "
@rem "Поиск конференционных публикаций в БД 'radar' "
@rem "по заданным критериям в файле 'stages.txt' "
@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++"
@rem
@rem "Вход 1: csv-файл БД 'radar' публикаций на НТМ "
@rem "'C:\TablePro\IEEEX-C_S2DB-Radar_1992-2022.csv' "
@rem " "
@rem "Вход 2: файл с поисковым запросом 'stages.txt' "
@rem " "
@rem "Выход 1: файл базы данных 'Result-C.csv' с записями "
@rem "о конференционных публикациях, найденными по запросу,"
@rem "записанному в файле 'stages.txt'. "
@rem " "
@rem "Выход 2: файл 'Nothing-С.txt' в случае, если "
@rem "искомых публикаций по запросу в БД НЕ найдено. "
@rem
@rem -------------------------------------------------------
@rem "Используемые bat-файлы: "
@rem "'prc-AND.bat' - обработка строки запроса с логическим"
@rem "оператором 'AND' (И); "
@rem "'prc-OR.bat' - обработка строки запроса с логическим "
@rem "оператором 'OR' (ИЛИ); "
@rem "'prc-NOT.bat' - обработка строки запроса с логическим"
@rem "оператором 'NOT' (НЕ); "
@rem "'prc-prim.bat' - обработка строки запроса без "
@rem "логических операторов "
@rem "'prc-stgs-С.bat' - запись промежуточных результатов "
@rem "поиска в папку 'stgs' "
@rem "'prc-ZIP.bat' - архивация полученных результатов "
@rem "в папку '_ready' "
@rem " "
@rem "Используемые UNIX-утилиты: "
@rem "'cat.exe', 'cut.exe', 'fgrep.exe', 'sed.exe', "
@rem "'sort.exe', 'tr.exe', 'type.exe' "
@rem " "
@rem "Используемые утилиты: "
@rem "'crecode.exe' - утилита перекодировки текста; "
@rem "'cmsort.exe' - утилита сортировки строк; "
@rem "'nircmd.exe' - универсальная утилита; "
@rem "'zip.exe' - утилита архивирования файлов "
@rem
@rem =======================================================
@rem "Удаление файлов, оставшихся после предыдущего поиска "
CALL _clean-C.bat
@rem
@rem -------------------------------------------------------
@rem "Заменяем в файле БД конференционных публикаций все "
@rem "'разделители' полей ";" на символ табуляции "
sed "s/\x22;\x22/\t/g" <"C:\TablePro\IEEEX-C_S2DB-Radar_1992-2022.csv" >temp\zuf01
@rem
@rem -------------------------------------------------------
@rem "Удаляем 'шапку' файла БД 'IEEEX-C_S2DB....csv', "
@rem "то есть первые две строки. "
sed 1,2d <temp\zuf01 >temp\zuf02
@rem
@rem -------------------------------------------------------
@rem "Копируем полученный файл в 'текущий' файл БД "
copy temp\zuf02 currdb >null
@rem
@rem "~~~~~~~~~~~~~~~~~~~~ НАЧАЛО ЦИКЛА ~~~~~~~~~~~~~~~~~~~"
@rem
echo ЏЋ€‘Љ Є®дҐаҐжЁ®ле ЇгЎ«ЁЄ жЁ© ў Ѓ„ 'radar' IEEE Xplore
echo Ї® § Їа®бг ў д ©«Ґ 'stages.txt'
nircmd wait 2500
@rem
@rem "ЦИКЛ по строкам файла 'stages.txt'. "
@rem
@rem "Нумерация строк файла 'stages.txt' "
cat -n <stages.txt >temp\zus01
sed "s/^ *//;s/$/\r/" <temp\zus01 >temp\zus02
@rem
FOR /F "delims=" %%i IN (temp\zus02) DO (
echo %%i>temp\zus03
cut -f1 <temp\zus03 >numstr
cut -f2 <temp\zus03 >string
sed "s/^\(.*\)\t\(.*\)$/ЋЎа Ў®вЄ бва®ЄЁ N\1 д ©« 'stages.txt'\r\n\2\r/" <temp\zus03 >temp\zus04
crecode -wd temp\zus04 num_string
cls
if exist temp\zus1* del /Q temp\zus1*
sed "/ AND /!d" <string >temp\zus11
sed "/ OR /!d" <string >temp\zus12
sed "/^NOT /!d" <string >temp\zus13
sed "/ AND \| OR \|NOT /d" <string >temp\zus14
FOR /R %CD\temp% %%I IN (zus1*) DO IF %%~zI LSS 1 DEL /F /Q "%%~I"
if exist temp\zus11 CALL prc-AND.bat
if exist temp\zus12 CALL prc-OR.bat
if exist temp\zus13 CALL prc-NOT.bat
if exist temp\zus14 CALL prc-prim.bat
CALL prc-stgs-C.bat
)
@rem "~~~~~~~~~~~~~~~~~~ ОКОНЧАНИЕ ЦИКЛА ~~~~~~~~~~~~~~~~~~"
@rem
if not exist currdb goto nothing
@rem
@rem "Пытаемся удалить файл 'currdb' 'нулевого' размера "
set Size=0
set Files=currdb
for %%F in (%Files%) do if /i %%~zF EQU %Size% del /f %%F
@rem
@rem -------------------------------------------------------
@rem "Обходим обработку, если файла 'currdb' нет "
@rem "В этом случае формируется файл 'Nothing-C.txt' "
if exist currdb goto METKA1
:nothing
echo По всему запросу 'stages.txt' публикаций не найдено. >Nothing-C.txt
goto CLEAN
@rem -------------------------------------------------------
:METKA1
@rem "Заменяем в сформированном файле базы данных 'currdb'."
@rem "все символы табуляции на 'разделители' 'полей' ";" "
sed "s/\t/\x22;\x22/g" <currdb >temp\zuf04
@rem
@rem -------------------------------------------------------
@rem "Вставляем переводы строк "
sed "s/$/\r/" <temp\zuf04 >temp\zuf05
@rem
@rem -------------------------------------------------------
@rem "Формируем файл 'Result-C.csv' с результатами поиска, "
@rem "добавляем 'шапку' (первые две строки) в файл БД. "
@rem "Заменяем в файле 'шапки' 'header.csv' в папке 'auxs' "
@rem "'издания' на 'мероприятия' "
sed "s/Ё§¤ Ёп/¬Ґа®ЇаЁпвЁп/" <auxs\header.csv >temp\zuf06
sed "s/$/\r/" <temp\zuf06 >temp\zuf07
cat temp\zuf07 temp\zuf05 >Result-C.csv
@rem
@rem -------------------------------------------------------
:CLEAN
@rem "Удаление временных файлов "
@rem
if exist currdb del /Q currdb
if exist final del /Q final
if exist notfound del /Q notfound
if exist numstr del /Q numstr
if exist null del /Q null
if exist string del /Q string
if exist temp\zuf* del /Q temp\zuf*
if exist temp\zus* del /Q temp\zus*
if exist zcopy.bat del /Q zcopy.bat
@rem
@rem -------------------------------------------------------
@rem "Архивация полученных результатов в папку '_ready' "
CALL prc-ZIP.bat
@rem
@rem -------------------------------------------------------
@rem "Выход из bat-файла. "
:END