1. @Echo off
  2. cls
  3. @rem
  4. @rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++"
  5. @rem "            Bat-файл '2_search-db-C.bat'             "
  6. @rem "                                                     "
  7. @rem "Поиск конференционных публикаций в БД 'radar'        "
  8. @rem "по заданным критериям в файле 'stages.txt'           "
  9. @rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++"
  10. @rem
  11. @rem "Вход 1: csv-файл БД 'radar' публикаций на НТМ        "
  12. @rem "'C:\TablePro\IEEEX-C_S2DB-Radar_1992-2022.csv'       "
  13. @rem "                                                     "
  14. @rem "Вход 2: файл с поисковым запросом 'stages.txt'       "
  15. @rem "                                                     "
  16. @rem "Выход 1: файл базы данных 'Result-C.csv' с записями  "
  17. @rem "о конференционных публикациях, найденными по запросу,"
  18. @rem "записанному в файле 'stages.txt'.                    "
  19. @rem "                                                     "
  20. @rem "Выход 2: файл 'Nothing-С.txt' в случае, если         "
  21. @rem "искомых публикаций по запросу в БД НЕ найдено.       "
  22. @rem
  23. @rem -------------------------------------------------------
  24. @rem "Используемые bat-файлы:                              "
  25. @rem "'prc-AND.bat' - обработка строки запроса с логическим"
  26. @rem "оператором 'AND' (И);                                "
  27. @rem "'prc-OR.bat' - обработка строки запроса с логическим "
  28. @rem "оператором 'OR' (ИЛИ);                               "
  29. @rem "'prc-NOT.bat' - обработка строки запроса с логическим"
  30. @rem "оператором 'NOT' (НЕ);                               "
  31. @rem "'prc-prim.bat' - обработка строки запроса без        "
  32. @rem "логических операторов                                "
  33. @rem "'prc-stgs-С.bat' - запись промежуточных результатов  "
  34. @rem "поиска в папку 'stgs'                                "
  35. @rem "'prc-ZIP.bat' - архивация полученных результатов "
  36. @rem "в папку '_ready'                                     "
  37. @rem "                                                     "
  38. @rem "Используемые UNIX-утилиты:                           "
  39. @rem "'cat.exe', 'cut.exe', 'fgrep.exe', 'sed.exe',        "
  40. @rem "'sort.exe', 'tr.exe', 'type.exe'                     "
  41. @rem "                                                     "
  42. @rem "Используемые утилиты:                                "
  43. @rem "'crecode.exe' - утилита перекодировки текста;        "
  44. @rem "'cmsort.exe' - утилита сортировки строк;             "
  45. @rem "'nircmd.exe' - универсальная утилита;                "
  46. @rem "'zip.exe' - утилита архивирования файлов             "
  47. @rem
  48. @rem =======================================================
  49. @rem "Удаление файлов, оставшихся после предыдущего поиска "
  50. CALL _clean-C.bat
  51. @rem
  52. @rem -------------------------------------------------------
  53. @rem "Заменяем в файле БД конференционных публикаций все   "
  54. @rem "'разделители' полей ";" на символ табуляции          "
  55. sed "s/\x22;\x22/\t/g" <"C:\TablePro\IEEEX-C_S2DB-Radar_1992-2022.csv" >temp\zuf01
  56. @rem
  57. @rem -------------------------------------------------------
  58. @rem "Удаляем 'шапку' файла БД 'IEEEX-C_S2DB....csv',      "
  59. @rem "то есть первые две строки.                           "
  60. sed 1,2d <temp\zuf01 >temp\zuf02
  61. @rem
  62. @rem -------------------------------------------------------
  63. @rem "Копируем полученный файл в 'текущий' файл БД         "
  64. copy temp\zuf02 currdb >null
  65. @rem
  66. @rem "~~~~~~~~~~~~~~~~~~~~ НАЧАЛО ЦИКЛА ~~~~~~~~~~~~~~~~~~~"
  67. @rem
  68. echo ЏЋ€‘Љ Є®­дҐаҐ­жЁ®­­ле ЇгЎ«ЁЄ жЁ© ў Ѓ„ 'radar' IEEE Xplore
  69. echo Ї® § Їа®бг ў д ©«Ґ 'stages.txt'
  70. nircmd wait 2500
  71. @rem
  72. @rem "ЦИКЛ по строкам файла 'stages.txt'.                  "
  73. @rem
  74. @rem "Нумерация строк файла 'stages.txt'                   "
  75. cat -n <stages.txt >temp\zus01
  76. sed "s/^  *//;s/$/\r/" <temp\zus01 >temp\zus02
  77. @rem
  78. FOR /F "delims=" %%i IN (temp\zus02) DO (
  79. echo %%i>temp\zus03
  80. cut -f1 <temp\zus03 >numstr
  81. cut -f2 <temp\zus03 >string
  82. sed "s/^\(.*\)\t\(.*\)$/ЋЎа Ў®вЄ  бва®ЄЁ N\1 д ©«  'stages.txt'\r\n\2\r/" <temp\zus03 >temp\zus04
  83. crecode -wd temp\zus04 num_string
  84. cls
  85. if exist temp\zus1* del /Q temp\zus1*
  86. sed "/ AND /!d" <string >temp\zus11
  87. sed "/ OR /!d" <string >temp\zus12
  88. sed "/^NOT /!d" <string >temp\zus13
  89. sed "/ AND \| OR \|NOT /d" <string >temp\zus14
  90. FOR /R %CD\temp% %%I IN (zus1*) DO IF %%~zI LSS 1 DEL /F /Q "%%~I"
  91. if exist temp\zus11 CALL prc-AND.bat
  92. if exist temp\zus12 CALL prc-OR.bat
  93. if exist temp\zus13 CALL prc-NOT.bat
  94. if exist temp\zus14 CALL prc-prim.bat
  95. CALL prc-stgs-C.bat
  96. )
  97. @rem "~~~~~~~~~~~~~~~~~~ ОКОНЧАНИЕ ЦИКЛА ~~~~~~~~~~~~~~~~~~"
  98. @rem
  99. if not exist currdb goto nothing
  100. @rem
  101. @rem "Пытаемся удалить файл 'currdb' 'нулевого' размера    "
  102. set Size=0
  103. set Files=currdb
  104. for %%F in (%Files%) do if /i %%~zF EQU %Size% del /f %%F
  105. @rem
  106. @rem -------------------------------------------------------
  107. @rem "Обходим обработку, если файла 'currdb' нет           "
  108. @rem "В этом случае формируется файл 'Nothing-C.txt'       "
  109. if exist currdb goto METKA1
  110. :nothing
  111. echo По всему запросу 'stages.txt' публикаций не найдено. >Nothing-C.txt
  112. goto CLEAN
  113. @rem -------------------------------------------------------
  114. :METKA1
  115. @rem "Заменяем в сформированном файле базы данных 'currdb'."
  116. @rem "все символы табуляции на 'разделители' 'полей' ";"   "
  117. sed "s/\t/\x22;\x22/g" <currdb >temp\zuf04
  118. @rem
  119. @rem -------------------------------------------------------
  120. @rem "Вставляем переводы строк                             "
  121. sed "s/$/\r/" <temp\zuf04 >temp\zuf05
  122. @rem
  123. @rem -------------------------------------------------------
  124. @rem "Формируем файл 'Result-C.csv' с результатами поиска, "
  125. @rem "добавляем 'шапку' (первые две строки) в файл БД.     "
  126. @rem "Заменяем в файле 'шапки' 'header.csv' в папке 'auxs' "
  127. @rem "'издания' на 'мероприятия'                           "
  128. sed "s/Ё§¤ ­Ёп/¬Ґа®ЇаЁпвЁп/" <auxs\header.csv >temp\zuf06
  129. sed "s/$/\r/" <temp\zuf06 >temp\zuf07
  130. cat temp\zuf07 temp\zuf05 >Result-C.csv
  131. @rem
  132. @rem -------------------------------------------------------
  133. :CLEAN
  134. @rem "Удаление временных файлов                            "
  135. @rem
  136. if exist currdb del /Q currdb
  137. if exist final del /Q final
  138. if exist notfound del /Q notfound
  139. if exist numstr del /Q numstr
  140. if exist null del /Q null
  141. if exist string del /Q string
  142. if exist temp\zuf* del /Q temp\zuf*
  143. if exist temp\zus* del /Q temp\zus*
  144. if exist zcopy.bat del /Q zcopy.bat
  145. @rem
  146. @rem -------------------------------------------------------
  147. @rem "Архивация полученных результатов в папку '_ready'    "
  148. CALL prc-ZIP.bat
  149. @rem
  150. @rem -------------------------------------------------------
  151. @rem "Выход из bat-файла.                                  "
  152. :END