home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1995 November / PCWK1195.iso / inne / podstawy / dos / 4dos / 4uzytki / ez-btm11.exe / EXT.BTM < prev    next >
Text File  |  1994-05-14  |  3KB  |  126 lines

  1. :EXT.BTM
  2. : Selects segments in file delimited by blank lines.
  3. : (For example, an addresses file. See at the bottom of this file)
  4. : If there is more than one occurrence of the word specified, a menu
  5. : will pop up for selection.
  6. : December 23, 1993
  7.  
  8. iff .%@search[ted.com]==. .and. .%@search[t.com]==. then
  9. echo This program requires either TED or TERSE
  10. echo (both available from simtel20 mirrors)
  11. quit
  12. endiff
  13.  
  14. if %@eval[%#] lt 2 .and. .%1==.example goto example
  15. if %@eval[%#] lt 2 goto syntax
  16.  
  17. setlocal
  18. set editor=ted
  19. rem        ^^^ change to 't' if your prefer TERSE
  20.  
  21. call settemp
  22. set fn=%@unique[%temp]
  23. set adfn=%1
  24. set extfile=%temp%extract.itm
  25. set items=%@eval[%#-1]
  26. set items0=%items
  27.  
  28. :begin
  29. set item=%2
  30.  
  31. find /i/n "%item" %adfn>>%fn
  32.  
  33. if .%editor==.t (keystack 0 alt-d alt-d alt-x^%editor %fn)
  34. if .%editor==.ted (keystack 0 f8 f8 f7 enter^%editor %fn)
  35. cls
  36.  
  37. iff %@lines[%fn] lt 0 .and. %items0 lt 2 then
  38.    set err=on
  39.    echo.^echo No %@upper["%item"] found in %@upper[%adfn]
  40.    endlocal
  41.    quit
  42. elseiff %@lines[%fn] lt 0 .and. %items0 ge 2 then
  43.    echo --(%@upper["%item"] not found)-- >>%extfile
  44.    goto end
  45. endiff
  46.  
  47. iff %@lines[%fn] gt 0 then
  48.    goto select_file
  49. else
  50.    set sn=%@line[%fn,0]
  51.    goto analyse
  52. endiff
  53.  
  54. :select_file
  55. cls
  56. set sn=%@select[%fn%,1,2,23,77, select desired item ]
  57. if .%sn==.%@char[@27] (endlocal^quit)
  58.  
  59. :analyse
  60. set border=%@eval[%@index[%sn,%@char[93]]-1]
  61. set num=%@substr[%sn,1,%border]
  62. if %@eval[%num] gt 0 set num=%@eval[%num-1]
  63.  
  64. :lines
  65. set line=%@line[%adfn,%num]
  66. if .%line==. goto end
  67. set num=%@eval[%num+1]
  68. echo %line >>%extfile
  69. goto lines
  70.  
  71. :end
  72. set items=%@eval[%items-1]
  73. iff %items ge 1 then
  74.    echo --->>%extfile
  75.    del /q %fn
  76.    shift
  77.    goto begin
  78. else
  79.    echo --->>%extfile
  80.    goto exit
  81. endiff
  82.  
  83. :exit
  84. del /q %fn
  85. if .%editor==.t (del /q %temp%*.bak)
  86. ex ca %extfile
  87. endlocal
  88. quit
  89. =======
  90. :syntax
  91. echo.
  92. echo Syntax is: %0 file_name search_item [search_item...]
  93. echo.
  94. echo (Type `%0 example' to see a sample)
  95.  
  96. quit
  97.  
  98. :example
  99. cls
  100. text
  101. Here is an example of a text with segments delimited by blank lines:
  102.  
  103. JP Software
  104. Order Department
  105. P.O. Box 1470
  106. East Arlington, MA 02174
  107. U.S.A.
  108. ·tel +617-646-3975
  109. ·fax: +617-646-0904
  110. ·e-mail: 75300.210@CompuServe.COM
  111.  
  112. Dpto. de Filología española
  113. Facultad de Filología
  114. Universidad de Santiago de Compostela
  115. 15771 Santiago de Compostela
  116. España
  117. ·tel: +34-81-575340
  118. ·fax: +34-81-574646
  119.  
  120. Svenska Akademiens Nobelbibliotek
  121. Källargränd 4
  122. S-111 29 Stockholm
  123. Sweden
  124. endtext
  125. quit
  126.