1. @Echo off
  2. cls
  3. @rem
  4. @rem "+++++++++++++++++++++++++++++++++++++++++++++++++++++"
  5. @rem "               Bat-файл 'prc-NOT.bat'                "
  6. @rem "                                                     "
  7. @rem "Обработка текущей строки 'string' запроса из файла   "
  8. @rem "'stages.txt', которая содержит логический оператор   "
  9. @rem "'NOT' (НЕ)                                           "
  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. Например, из строки вида                          "
  33. @rem "NOT DSD{2,10,12}                                     "
  34. @rem "формируется строка:                                  "
  35. @rem "DSD;2,10,12                                          "
  36. @rem "Здесь в первом столбце - искомый термин              "
  37. @rem "(слово, словосочетание, аббревиатура),               "
  38. @rem "а '2', '10' и '12' - номера полей БД, в которых      "
  39. @rem "этот термин (слово, словосочетание, аббревиатура)    "
  40. @rem "ищется                                               "
  41. @rem
  42. sed "s/  */ /g" <string >temp\zud01
  43. sed "s/^NOT //" <temp\zud01 >temp\zud02
  44. sed "s/{/;{/g;s/$/\r/" <temp\zud02 >temp\zud03
  45. sed "s/[{}()\x22\x93\x94\xAB\xBB]//g" <temp\zud03 >temp\zud04
  46. sed "s/$/\r/" <temp\zud04 >temp\zud05
  47. @rem
  48. @rem -------------------------------------------------------
  49. @rem "Из файла 'currdb' с текущей выборкой из БД,          "
  50. @rem "(в которой 14 полей) извлекается 1-ое поле           "
  51. @rem "(порядковый номер) и все отмеченные поля N-ое        "
  52. @rem "(в данном примере - 2, 10, и 12-е) базы данных.      "
  53. @rem "Формируется файл 'temp\zud08'                        "
  54. @rem
  55. cut -f2 -d; <temp\zud05 >temp\zud06
  56. tr -d " [:alpha:]" <temp\zud06 >temp\zud07
  57. sed "s/^\(.*\)$/cut -f1,\1 <currdb >temp\\zud08\r/" <temp\zud07 >ztmp6.bat
  58. CALL ztmp6.bat
  59. @rem
  60. @rem -------------------------------------------------------
  61. @rem "Из файла 'temp\zud08' удаляются все записи,          "
  62. @rem "содержащие выбранный термин; в данном примере        "
  63. @rem "- аббревиатуру 'DSD'                                 "
  64. @rem
  65. cut -f1 -d; <temp\zud05 >temp\zud09
  66. sed "s/^\(.*\)$/fgrep -i \x22\1\x22 -v <temp\\zud08 >temp\\zud11\r/" <temp\zud09 >ztmp7.bat
  67. CALL ztmp7.bat
  68. @rem
  69. @rem -------------------------------------------------------
  70. @rem "Обновляем текущий файл 'currdb'                      "
  71. @rem
  72. cut -f1 <temp\zud11 >temp\zud12
  73. sed "s/$/\t\r/" <temp\zud12 >temp\zud13
  74. fgrep -i -f temp\zud13 <currdb >temp\zud14
  75. copy /Y temp\zud14 currdb >null
  76. @rem
  77. @rem -------------------------------------------------------
  78. @rem "Выводим число найденных записей                      "
  79. @rem
  80. sed -n "$=" <currdb >temp\zud15
  81. set Size=0
  82. set Files=temp\zud15
  83. for %%F in (%Files%) do if /i %%~zF EQU %Size% del /f %%F
  84. if exist temp\zud15 goto METKA1
  85. echo ЏгЎ«ЁЄ жЁ© ­Ґ ­ ©¤Ґ­® >temp\zud17
  86. echo >notfound
  87. goto METKA2
  88. :METKA1
  89. sed "s/^\(.*\)$/Ќ ©¤Ґ­® ЇгЎ«ЁЄ жЁ©: \1\r/" <temp\zud15 >temp\zud16
  90. crecode -wd temp\zud16 temp\zud17
  91. cls
  92. :METKA2
  93. cls
  94. type num_string
  95. type temp\zud17
  96. if not exist notfound echo Џа®¬Ґ¦гв®з­л© १г«мв в § ЇЁб ­ ў Ї ЇЄг 'stgs'
  97. nircmd wait 2000
  98. @rem
  99. @rem -------------------------------------------------------
  100. :CLEAN
  101. @rem "Удаление временных файлов                            "
  102. @rem
  103. if exist num_string del /Q num_string
  104. if exist null del /Q null
  105. if exist temp\zud* del /Q temp\zud*
  106. if exist ztmp6.bat del /Q ztmp6.bat
  107. if exist ztmp7.bat del /Q ztmp7.bat
  108. @rem
  109. @rem -------------------------------------------------------
  110. @rem "Выход из bat-файла                                   "
  111. :END