@Echo offcls@rem @rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++"@rem " Bat-файл '1_search-db-J.bat' "@rem " "@rem "Поиск журнальных статей в БД 'radar' по заданным "@rem "критериям в файле 'stages.txt' "@rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++"@rem @rem "Вход 1: csv-файл БД 'radar' журнальных статей "@rem "'C:\TablePro\IEEEX-J_S2DB-Radar_1992-2022.csv' "@rem " "@rem "Вход 2: файл с поисковым запросом 'stages.txt' "@rem " "@rem "Выход 1: файл базы данных 'Result-J.csv' с записями "@rem "о журнальных публикациях, найденными по запросу, "@rem "записанному в файле 'stages.txt'. "@rem " "@rem "Выход 2: файл 'Nothing-J.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.bat@rem @rem -------------------------------------------------------@rem "Заменяем в файле БД журнальных публикаций все "@rem "'разделители' полей ";" на символ табуляции "sed "s/\x22;\x22/\t/g" <"C:\TablePro\IEEEX-J_S2DB-Radar_1992-2022.csv" >temp\zuf01@rem @rem -------------------------------------------------------@rem "Удаляем 'шапку' файла БД 'IEEEX-J_S2DB....csv', "@rem "то есть первые две строки. "sed 1,2d <temp\zuf01 >temp\zuf02@rem @rem -------------------------------------------------------@rem "Копируем полученный файл в 'текущий' файл БД "copy temp\zuf02 currdb >null@rem @rem "~~~~~~~~~~~~~~~~~~~~ НАЧАЛО ЦИКЛА ~~~~~~~~~~~~~~~~~~~"@rem echo ЏЋ�‘Љ ¦га «мле бв ⥩ ў Ѓ„ 'radar' IEEE Xploreecho Ї® § Їа®бг ў д ©«Ґ 'stages.txt'nircmd wait 2500@rem @rem "ЦИКЛ по строкам файла 'stages.txt'. "@rem @rem "Нумерация строк файла 'stages.txt' "cat -n <stages.txt >temp\zus01sed "s/^ *//;s/$/\r/" <temp\zus01 >temp\zus02@rem FOR /F "delims=" %%i IN (temp\zus02) DO (echo %%i>temp\zus03cut -f1 <temp\zus03 >numstrcut -f2 <temp\zus03 >stringsed "s/^\(.*\)\t\(.*\)$/ЋЎа Ў®вЄ бва®ЄЁ N\1 д ©« 'stages.txt'\r\n\2\r/" <temp\zus03 >temp\zus04crecode -wd temp\zus04 num_stringclsif exist temp\zus1* del /Q temp\zus1*sed "/ AND /!d" <string >temp\zus11sed "/ OR /!d" <string >temp\zus12sed "/^NOT /!d" <string >temp\zus13sed "/ AND \| OR \|NOT /d" <string >temp\zus14FOR /R %CD\temp% %%I IN (zus1*) DO IF %%~zI LSS 1 DEL /F /Q "%%~I"if exist temp\zus11 CALL prc-AND.batif exist temp\zus12 CALL prc-OR.batif exist temp\zus13 CALL prc-NOT.batif exist temp\zus14 CALL prc-prim.batCALL prc-stgs.bat)@rem "~~~~~~~~~~~~~~~~~~ ОКОНЧАНИЕ ЦИКЛА ~~~~~~~~~~~~~~~~~~"@rem if not exist currdb goto nothing@rem @rem "Пытаемся удалить файл 'currdb' 'нулевого' размера "set Size=0set Files=currdbfor %%F in (%Files%) do if /i %%~zF EQU %Size% del /f %%F@rem @rem -------------------------------------------------------@rem "Обходим обработку, если файла 'currdb' нет "@rem "В этом случае формируется файл 'Nothing.txt' "if exist currdb goto METKA1:nothingecho По всему запросу 'stages.txt' публикаций не найдено. >Nothing.txtgoto 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.csv' с результатами поиска, "@rem "добавляем 'шапку' (первые две строки) в файл БД. "@rem "Файл 'шапки' 'header.csv' находится в папке 'auxs' "cat auxs\header.csv temp\zuf05 >Result-J.csv@rem @rem -------------------------------------------------------:CLEAN@rem "Удаление временных файлов "@rem if exist currdb del /Q currdbif exist final del /Q finalif exist notfound del /Q notfoundif exist numstr del /Q numstrif exist null del /Q nullif exist string del /Q stringif 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