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

  1. :: FINDREAD.BTM
  2. :: Purpose: to find a file on disk, including compressed in a ZIP archive,
  3. :: and read it immediately. See HELP below for details.
  4. :: (Itamar Even-Zohar, May 12, 1994)
  5.  
  6. if %@index[%1,h] ge 0 .and. %@index[%1,h] lt 2 goto help
  7. if .%1==. goto help
  8.  
  9. setlocal
  10.  
  11. :check_pgms
  12. set editor=t.com
  13. set num=0
  14. if not exist %@search[t.com] (set pgm=t.com^gosub error)
  15. if not exist %@search[whereis.exe] (set pgm=whereis.exe^gosub error)
  16. if not exist %@search[pkunzip.exe] (set pgm=pkunzip.exe^gosub error)
  17. if .%finished==.yes goto quit
  18.  
  19. call settemp
  20. :: ('settemp.btm' is a batch file which defines a temporary drive/path.)
  21. set fn=%temp%finds
  22. set flog=%temp%findread.log
  23.  
  24. :repeat
  25. :: (check what was last query.)
  26. iff exist %flog then
  27. set lines=%@lines[%flog]
  28. set src_string=%@line[%flog,%lines]
  29. endiff
  30.  
  31. iff .%1==./log then
  32.    iff not exist %flog then
  33.    echo %@upper[%@filename["%flog"]] not found
  34.    goto quit
  35.    endiff
  36. *list %flog
  37. goto quit
  38. endiff
  39.  
  40. :search
  41. iff .%src_string==.%1 .and. exist %fn then
  42. goto select
  43. :: (use results file again if search item is identical to
  44. :: last query and the log file exists.)
  45. else
  46. whereis %1 -a >%fn
  47. :: (collect all search results to file "finds" on temporary
  48. :: drive)
  49. keystack 0 ALT-D ALT-D ALT-D ALT-X
  50. t %fn
  51. :: (delete 3 first lines from top of file using Gil's T.COM)
  52. echo %1 >>%flog
  53. :: (create, or append, search string to the log file, "findread.log",
  54. :: on temporary drive.)
  55. cls
  56. endiff
  57.  
  58. :select
  59. set cmdline=%@select[%fn,1,8,24,80, %& files ]
  60. if "%cmdline"=="" goto quit
  61.  
  62. iff %@index[%cmdline,(] eq 0 then
  63. set from=%@eval[%@index[%cmdline,(]+1]
  64. set to=%@eval[%@index[%cmdline,)]-1]
  65. set src_file=%@substr[%cmdline,%from,%to]
  66. gosub remove_space
  67. goto ext&read
  68. else
  69. goto reg_file
  70. endiff
  71.  
  72. :ext&read
  73. set arc_file=%@substr[%cmdline,41]
  74.    :: (You may replace 'pkunzip' and 4DOS "list" by UNZIP
  75.    :: and /or Buerg's LIST.)
  76.    ::pkunzip -c %arc_file %src_file |list /s
  77.    ::unzip -p %arc_file %src_file |list /s
  78. pkunzip -c %arc_file %src_file |*list /s
  79. goto quit
  80.  
  81. :reg_file
  82. set src_file=%@substr[%cmdline,0,13]
  83. gosub remove_space
  84.  
  85. :read_reg
  86. set pathf=%@substr[%cmdline,41]
  87. *list %pathf%%src_file
  88. goto quit
  89.  
  90. :quit
  91. if exist %fn.bak del /q %fn.bak
  92. endlocal
  93. quit
  94.  
  95. ::-------------------HELP------------------------
  96. :help
  97. cls
  98. screen 1 0
  99. text
  100.  FINDREAD.BTM
  101.  Searches disk for a given string, displays results, and allow quick reading
  102.  of desired file, whether temporarily extracted from a ZIP archive, or as a
  103.  plain text file.
  104.    You can read consecutive files for the same query by running the batch
  105.  again after it first created results file. As long as you do not enter a
  106.  new query, the same results file will be used.
  107.    If you wish to check your queries for last session, type FINDREAD /log
  108.  
  109.    SYNTAX:
  110.    FINDREAD {string|"string"} or /h (for HELP), or /log (for log of queries)
  111.        where string (without inverted commas) can contain wildcards.
  112.        A string between inverted commas is a "regular expression": it
  113.        represents any segment from a filename.
  114.  
  115.       Examples:
  116.       FINDREAD finda*.*
  117.    or 
  118.       FINDREAD "finda"
  119.  
  120.  Note: This batch requires Ledbetter's filefinder SST.EXE (renamed back
  121.  to WHEREIS.EXE), Katz's PKUNZIP (or UNZIP), and Gil's T.COM, all of which
  122.  are downloadable from Simtel20 mirror sites.
  123. endtext
  124. quit
  125. ::---------------subroutines---------------------
  126. :remove_space
  127. :: (remove blank spaces between filename and extension
  128. :: if it exists.)
  129. set dot=%@char[46]
  130. set dot_pos=%@index[%src_file,%dot]
  131. iff %dot_pos gt 0 .and. %dot_pos lt 12 then
  132.    set fil1=%@trim[%@substr[%src_file,0,%dot_pos]]
  133.    set fil2=%@substr[%src_file,%dot_pos]
  134.    set src_file=%fil1%%fil2
  135. else
  136.    set src_file=%@substr[%src_file,0,9]
  137.    set src_file=%@trim[%src_file]
  138. endiff
  139. return
  140.  
  141. :error
  142. set num=%@eval[%num+1]
  143. beep
  144. echo "%@upper[%pgm]" not found. Can't run FINDREAD.BTM
  145. if %num ge 1 set finished=yes
  146. return
  147.  
  148.