1. @Echo off
  2. cls
  3. @rem
  4. @rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++"
  5. @rem "                Bat-файл 'prc-1.bat'                 "
  6. @rem "                                                     "
  7. @rem "Обработка текущей строки 'string' запроса из файла   "
  8. @rem "'stages.txt', которая НЕ содержит логических         "
  9. @rem "операторов                                           "
  10. @rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++"
  11. @rem
  12. @rem "Вход 1: файл 'string' со строкой из файла            "
  13. @rem "'stages.txt'                                         "
  14. @rem
  15. @rem "Вход 2: файл 'currdb' с текущей выборкой из БД       "
  16. @rem "'radar' журнальных публикаций ЭБ IEEE Xplore         "
  17. @rem
  18. @rem "Выход: обновленный 'текущий' файл БД 'currdb'        "
  19. @rem
  20. @rem =======================================================
  21. @rem
  22. if exist notfound goto CLEAN
  23. @rem
  24. type num_string
  25. nircmd wait 1500
  26. @rem
  27. @rem -------------------------------------------------------
  28. @rem "Обрабатываем файл 'string':                          "
  29. @rem "1. множественные пробелы заменяются на одиночные;    "
  30. @rem "2. удаляются пробелы в начале строки;                "
  31. @rem "3. удаляются все кавычки;                            "
  32. @rem "4. из строки вида 'parameterization{10}' формируется "
  33. @rem "строка 'parameterization;10'. "
  34. @rem "Здесь: 'parameterization' - искомый термин, а '10' - "
  35. @rem "номер поля БД, в котором этот термин ищется          "
  36. @rem
  37. sed "s/  */ /g" <string >temp\zuc01
  38. sed "s/^  *//" <temp\zuc01 >temp\zuc02
  39. sed "s/{/;{/g" <temp\zuc02 >temp\zuc03
  40. sed "s/[{}()\x22\x93\x94\xAB\xBB]//g;s/$/\r/" <temp\zuc03 >temp\zuc05
  41. @rem
  42. @rem -------------------------------------------------------
  43. @rem "Из файла 'currdb' с текущей выборкой из БД,          "
  44. @rem "(в которой 14 полей) извлекается 1-ое поле           "
  45. @rem "(порядковый номер) и N-ое (в данном примере - 10-е)  "
  46. @rem "поле базы данных                                     "
  47. @rem
  48. cut -f2 -d; <temp\zuc05 >temp\zuc06
  49. tr -d " [:alpha:][:punct:]" <temp\zuc06 >temp\zuc07
  50. sed ":a;$!N;s/\n/,/;ta;" <temp\zuc07 >temp\zuc08
  51. sed "s/^\(.*\)$/cut -f1,\1 <currdb >temp\\zuc09/" <temp\zuc08 >ztmp4.bat
  52. CALL ztmp4.bat
  53. @rem
  54. @rem -------------------------------------------------------
  55. @rem "Из сформированного файла 'temp\zuc09' извлекаются    "
  56. @rem "записи (строки), содержащие искомый одиночный термин "
  57. @rem "(в данном примере - это слово 'parameterization'     "
  58. @rem
  59. cut -f1 -d; <temp\zuc05 >temp\zuc10
  60. sed "s/^\(.*\)$/grep -i \x22\1\x22 <temp\\zuc09 >temp\\zuc11\r/" <temp\zuc10 >ztmp5.bat
  61. CALL ztmp5.bat
  62. @rem
  63. @rem -------------------------------------------------------
  64. @rem "Обновляем текущий файл 'currdb'                      "
  65. @rem
  66. cut -f1 <temp\zuc11 >temp\zuc12
  67. sed "s/$/\t\r/" <temp\zuc12 >temp\zuc13
  68. fgrep -i -f temp\zuc13 <currdb >temp\zuc14
  69. copy /Y temp\zuc14 currdb >null
  70. @rem
  71. @rem -------------------------------------------------------
  72. @rem "Выводим число найденных записей                      "
  73. @rem
  74. sed -n "$=" <currdb >temp\zuc15
  75. set Size=0
  76. set Files=temp\zuc15
  77. for %%F in (%Files%) do if /i %%~zF EQU %Size% del /f %%F
  78. if exist temp\zuc15 goto METKA1
  79. echo ЏгЎ«ЁЄ жЁ© ­Ґ ­ ©¤Ґ­® >temp\zuc17
  80. echo >notfound
  81. goto METKA2
  82. :METKA1
  83. sed "s/^\(.*\)$/Ќ ©¤Ґ­® ЇгЎ«ЁЄ жЁ©: \1\r/" <temp\zuc15 >temp\zuc16
  84. crecode -wd temp\zuc16 temp\zuc17
  85. cls
  86. :METKA2
  87. cls
  88. type num_string
  89. type temp\zuc17
  90. if not exist notfound echo Џа®¬Ґ¦гв®з­л© १г«мв в § ЇЁб ­ ў Ї ЇЄг 'stgs'
  91. nircmd wait 2000
  92. @rem
  93. @rem -------------------------------------------------------
  94. :CLEAN
  95. @rem "Удаление временных файлов                            "
  96. @rem
  97. if exist num_string del /Q num_string
  98. if exist null del /Q null
  99. if exist temp\zuc* del /Q temp\zuc*
  100. if exist ztmp4.bat del /Q ztmp4.bat
  101. if exist ztmp5.bat del /Q ztmp5.bat
  102. @rem
  103. @rem -------------------------------------------------------
  104. @rem "Выход из bat-файла                                   "
  105. :END