home *** CD-ROM | disk | FTP | other *** search
/ CD Shareware Magazine 1997 January / CD_shareware_1-97.iso / DOS / UTL-DSK / BFIND609.ZIP / BFIND.DOC < prev    next >
Encoding:
Text File  |  1996-07-19  |  13.5 KB  |  326 lines

  1. BFIND.DOC                            1                         Revised: 07-19-96
  2.  
  3. The BFIND.EXE program adds Boolean logic to DOS's FIND command.  In  most  ways,
  4. it's identical to the FIND command except:
  5.  
  6.   * Adds AND, OR, NOT, and XOR options to searches (finding all lines with
  7.     "Apples" or "Bananas", for example).
  8.   * Allows you to specify the starting column of the desired string.
  9.   * Adds a pause (/P) option to have the output pause every 24 lines.
  10.   * Avoids need to include the search string in quotation marks so you can
  11.     use the program more easily in batch commands.
  12.   * The input file specification can include standard DOS wildcards or an
  13.     external file (@listfile) containing the files to be processed, e.g:
  14.         BFIND /I "SOUND" *.DOC > TEMP.X
  15.   * Allows you to skip the by-file heading information ("----- filename").
  16.   * Can avoid showing file name header if no hits in the file (/-EMPTY option).
  17.   * Handles DOS text files (lines end with CR/LF), Mac text files (lines end
  18.     with CR), or Unix text files (lines end with LF).
  19.   * Should be able to handle input files with line lengths of 5000 characters
  20.     or more.
  21.   * Allows you to remove non-text characters from the output or even specify
  22.     your own character-translation file for them.
  23.  
  24. The only FIND feature that BFIND does *not* support is the  ability  to  specify
  25. multilple single input  files  without  using  wildcards  ("FIND  ...  BRUCE.TXT
  26. BRUCE.DOC" works--"BFIND ... BRUCE.TXT BRUCE.DOC" does not).  In  addition,  you
  27. cannot do piping into BFIND (e.g. DIR | BFIND ...).
  28.  
  29. The DOS FIND command allows you to find lines in a text  file  which  contain  a
  30. given string.  You can also have the program tell you how  many  lines  met  the
  31. search criteria without actually viewing them which is an ideal way to find  out
  32. how many times a given string appears in your file.  You can even  use  FIND  to
  33. tell you how many total lines are in a given file just by  requesting  a  string
  34. that you know will never appear in your file  like  "#X$S$"  and  using  the  /C
  35. (count) parameter.
  36.  
  37. BFIND adds to these capabilities.  It gives you the power of AND, OR,  NOT,  and
  38. XOR, allowing you to find any line, for example, that contains both "Apples" and
  39. "Oranges" or to present any lines that contain either "Bananas" and "Pears".  In
  40. addition, you can do column-specific searching, finding only those  lines,  say,
  41. that contain "PRINT" beginning in column 10.
  42.  
  43. BFIND allows you to specify wildcards for the input file.  You can also put  the
  44. list of file names to process in a text file and tell BFIND to process the files
  45. listed therein.
  46.  
  47.  
  48. Specifying parameters:
  49.  
  50. Parameters for this program can be set in the following ways.  The last  setting
  51. encountered always wins:
  52.   - Read from an *.INI file (see BRUCEINI.DOC file),
  53.   - Through the use of an environmental variable (SET BFIND=whatever), or
  54.   - From the command line (see "Syntax" below)
  55.  
  56.  
  57.  
  58. BFIND.DOC                            2                         Revised: 07-19-96
  59.  
  60. Syntax:
  61.  
  62.     BFIND [ /V | /-V ] [ /C | /-C ] [ /N | /-N ] [ /I | /-I ] [ /P | /-P ]
  63.       [ /-HEADER ] [ /-EMPTY ] [ /FILTER | /FILTER=filename ]
  64.       [ /LINES { line1-line2 | line1 linect } ... ]
  65.       [ /MONO ] [ /Iinitfile | /INULL ] [ /? ] [ /?&H ]
  66.       { search } { filespec | @listfile } [ >filename ]
  67.  
  68. where:
  69.  
  70. "/V" says to find those items that do NOT match  the  specification.   Initially
  71. defaults to "/-V".
  72.  
  73. "/-V" says to find those  items  that  DO  match  the  specification.   This  is
  74. initially the default.
  75.  
  76. "/C" says to show the count of the items found (no individual lines).  Initially
  77. defaults to "/-C".  One use for the "/C" parameter is to  count  the  number  of
  78. lines in a file; search for all lines that  do  *not*  (/V)  contain  a  totally
  79. improbable string and then tally them.  E.g.
  80.  
  81.         BFIND /V /C "&^&^&#" MYFILE.TXT
  82.  
  83. "/-C" says to skip counting the items.  This is initially the default.
  84.  
  85. "/N" says to number the output lines.  Initially defaults to "/-N".
  86.  
  87. "/-N" says to skip numbering the output lines.  This is initially the default.
  88.  
  89. "/I" says to make it a case-insensitive search.  So a search  for  "Apple"  will
  90. find "APPLE", "apple", ApPle", etc.
  91.  
  92. "/-I" is the opposite of /I and is typically the default.  A search for  "Apple"
  93. will not find "APPLE".
  94.  
  95. "/P" says to have the display pause  every  24  lines.   Initially  defaults  to
  96. "/-P".
  97.  
  98. "/-P" says to not bother pausing the output  display.   This  is  initially  the
  99. default.
  100.  
  101. "/-HEADER" says to skip the normal -----infile output line that  appears  before
  102. the results of the output.
  103.  
  104. "/HEADER" says to include the headers.  This  is  initially  the  default.   The
  105. header lines look like this:
  106.  
  107.      --------- C:\VBDOS\BFIND.BAS
  108.  
  109. "/EMPTY" says that the -----infile header information is to be shown even if the
  110. file doesn't have any hits in it.  This is initially the default.
  111.  
  112. "/-EMPTY" says to only show the -----infile header information if the  file  has
  113. hits.  Initially defaults to "/EMPTY".
  114.  
  115.  
  116. BFIND.DOC                            3                         Revised: 07-19-96
  117.  
  118. "/FILTER" says to remove all nonprintable characters from the output.  Initially
  119. defaults to "/-FILTER".
  120.  
  121. "/-FILTER" says to not bother removing  the  nonprintable  characters  from  the
  122. output.  This is initially the default.
  123.  
  124. "/FILTER=filename" specifies that a filter is to be  applied  and  all  non-same
  125. character replacements are in the file "filename".   This  feature  is  of  very
  126. limited usefulness in the  BFIND  program  unless  you're  reading  native  word
  127. processing files.  If this excites you for some reason, get the ZIP  READymm.ZIP
  128. and read the documentation for the READY program.  The feature works identically
  129. in both programs.
  130.  
  131. "/LINES line1-line2" says to restrict the search to lines between  line  numbers
  132. line1 and line2 inclusive.  You can have multiple line  requests  in  any  order
  133. such as "/LINES 1-10 90-100 30-50".  The  routine  skips  all  lines  after  the
  134. largest line number is encountered.  Defaults to "/LINES 1-9999999".
  135.  
  136. "/LINES line1 linect" says to restrict the search to lines beginning with  line1
  137. and continuing for a total of linect lines.  So "/LINES 10 20" is  actually  the
  138. same as "/LINES 10-29".
  139.  
  140. "/MONO" (or "/-COLOR") does  not  try  to  override  screen  colors.   Initially
  141. defaults to "/COLOR".
  142.  
  143. "/COLOR" (or "/-MONO") allows screen colors to be overridden.  This is initially
  144. the default.
  145.  
  146. "/Iinitfile" says to read an initialization file with the file name  "initfile".
  147. The file specification *must* contain a period.  Initfiles are described in  the
  148. BRUCEINI.DOC file.  Initially defaults to "/IBFIND.INI".
  149.  
  150. "/INULL" says to skip loading the initialization file.
  151.  
  152. "/?" or "/HELP" or "HELP" shows you the syntax for the command.
  153.  
  154. "/?&H" gives you a hexadecimal and decimal conversion table.
  155.  
  156. "search" is described below.
  157.  
  158. "filespec" tells the routine which file or  files  are  to  be  processed.   The
  159. specification can include path and wildcards  if  desired.   One  thing  I  find
  160. useful with wildcards is that is allows me to create an output that concatenates
  161. all of the input files together with the typical headers (/HEADER) that separate
  162. each portion.  This requires searching for all lines in a file so  you  need  to
  163. use the  /V  option  and  look  for  an  improbable  string.   For  example,  to
  164. concatenate all *.TXT files together as a new file called TEMP.NEW and have  the
  165. little header between each, say this:
  166.  
  167.         BFIND /V "&#$#" *.TXT > TEMP.NEW
  168.  
  169. "@listfile" allows you to have a variety of file specifications saved in a  text
  170. file named "listfile".  Each line  in  the  file  should  consist  of  one  file
  171. specification, each of which can include a path and wildcards if desired.  Blank
  172. lines and lines beginning with semi-colons, colons, or quotes are  ignored.   An
  173. example using this is provided at the end of this documentation.
  174.  
  175.  
  176. BFIND.DOC                            4                         Revised: 07-19-96
  177.  
  178. ">filename" redirects the output to a text file.  This automatically invokes the
  179. /-P option.  This is useful for saving the found lines into another  file.   For
  180. example:
  181.  
  182.         BFIND "Bruce" TEMP.TXT > TEMP2.TXT
  183.  
  184.  
  185. For search, the syntax is:
  186.  
  187.   [ ( ]... search_item [ boolean [ ( ]... search_item [ ) ]...] [ ) ]...
  188.  
  189. where:
  190.  
  191.   ( and )     are used to group items
  192.   search_item is shown below
  193.   boolean     is AND, OR, or XOR (NOT is included with search_item)
  194.  
  195. for search_item, the syntax is:
  196.  
  197.   [ NOT ]  "string" [ column ]
  198.  
  199. where:
  200.  
  201.   NOT         is obvious
  202.   string      the string to search; the quotation marks are typically not
  203.               required unless the string contains a space or a reserved word
  204.   column      is the column in which the string must be found.
  205.  
  206. So, let's cover some examples:
  207.  
  208.         BFIND "Bugs Bunny" OR "Elmer Fudd" TEST.TXT
  209.  
  210. Finds any lines in the file TEST.TXT containing either "Bugs  Bunny"  or  "Elmer
  211. Fudd" in them.
  212.  
  213.         BFIND (Apples or Oranges) AND NOT Pears TEST2.TXT
  214.  
  215. Finds any lines in the file  TEST2.TXT  which  contain  the  words  "Apples"  or
  216. "Oranges" in them and ignores any  lines  containing  "Pears".   Note  that  the
  217. quotes around the search words are not required unless the words include  spaces
  218. or unless they could be confused with some other keywords.   "BFIND  OR  OR  AND
  219. TEST3.TXT" might cause the program to get confused since "OR" and  "AND",  which
  220. you want to look for, are also keywords.
  221.  
  222.         BFIND /C "Bugs Bunny" AND Martians TEST.TXT
  223.  
  224. Gives you a total for the number of  lines  containing  both  "Bugs  Bunny"  and
  225. "Martians".
  226.  
  227.  
  228. BFIND.DOC                            5                         Revised: 07-19-96
  229.  
  230. The search string can include any text characters.  It can  also  contain  ASCII
  231. codes, created either using the Alt key in combination with the  numeric  keypad
  232. (e.g. Alt-228 to get a Sigma character) or else by embedding a hexadecimal  code
  233. (in the form &Hxx) or a decimal code (in the form  \nnn)  in  the  text.   These
  234. codes are described in the BRUCEHEX.DOC file.  For example, to find  the  smiley
  235. face character in a file called TEST.TXT, either of the following work:
  236.  
  237.         BFIND "" TEST.TXT
  238.         BFIND \001 TEST.TXT
  239.  
  240. If you search for more than one word without using  a  Boolean  operator,  BFIND
  241. presumes you wanted the words searched with an "AND" Boolean operator.  So this:
  242.  
  243.         BFIND Print Form *.TXT
  244.  
  245. is the same thing as saying:
  246.  
  247.         BFIND Print AND Form *.TXT
  248.  
  249. If you wanted to search for the *phrase* "Print Form", you'd have to say:
  250.  
  251.         BFIND "Print Form" *.TXT
  252.  
  253. You can press the Esc key to abort the search early.
  254.  
  255. BFIND, unlike FIND, typically doesn't require the search string to be in quotes.
  256. As a result, you can create a text file (presume it's  called  C:\BAT\PHONE.TXT)
  257. containing phone numbers or  something  and  then  create  a  batch  file  (like
  258. PHONE.BAT) that looks like this:
  259.  
  260.         BFIND %1 %2 %3 %4 %5 C:\BAT\PHONE.TXT
  261.  
  262. When you want to find a phone number, you just say  "PHONE  name".   This  is  a
  263. little more natural that using FIND which would require  that  you  enclose  the
  264. name in quotes.  You can still use the Boolean operators  in  BFIND;  the  batch
  265. file above would allow up to five parameters.
  266.  
  267. If you have multiple phone books, use the @listfile option in  the  batch  file.
  268. For example, I have four phone files I search; a personal  one  (PHONES.TXT),  a
  269. list of e-mail addresses (PHONMAIL.TXT), a list of  work-related  phone  numbers
  270. that  are  distributed  to  the  office  (EBBPHONE.TXT),  and  an  office   list
  271. (OBAPHONE.TXT).  My @listfile is called  C:\MINE\PHONE.LST  and  contains  these
  272. lines:
  273.  
  274.         c:\mine\phones.txt
  275.         c:\mine\phonmail.txt
  276.         c:\mine\ebbphone.txt
  277.         c:\mine\obaphone.txt
  278.  
  279. My PHONE.BAT file contains this line:
  280.  
  281.         BFIND /I /P /-EMPTY %1 %2 %3 %4 @C:\MINE\PHONE.LST
  282.  
  283.  
  284.  
  285. BFIND.DOC                            6                         Revised: 07-19-96
  286.  
  287. Return codes:
  288.  
  289. BFIND returns the following ERRORLEVEL codes:
  290.         0 = no problems, string found
  291.         1 = no problems, string not found
  292.       250 = operation aborted by pressing Escape
  293.       255 = syntax problems, file not found, or /? requested
  294.  
  295.  
  296. Author:
  297.  
  298. This program was written by Bruce Guthrie of Wayne Software.  It is free for use
  299. and redistribution provided relevant documentation is kept with the program,  no
  300. changes are made to the program or documentation, and it  is  not  bundled  with
  301. commercial programs or charged for separately.  People who need to bundle it  in
  302. for-sale packages must pay a $50 registration fee to  "Wayne  Software"  at  the
  303. following address.
  304.  
  305. Additional information about this and other Wayne Software programs can be found
  306. in the file BRUCEymm.DOC which should be included  in  the  original  ZIP  file.
  307. ("ymm" is replaced by the last digit of the year and the two digit month of  the
  308. release.  BRUCE512.DOC came out in December 1995.  This same  naming  convention
  309. is used in naming the ZIP file that this program was included in.) Comments  and
  310. suggestions can also be sent to:
  311.  
  312.                 Bruce Guthrie
  313.                 Wayne Software
  314.                 113 Sheffield St.
  315.                 Silver Spring, MD 20910
  316.  
  317.                 fax: (301) 588-8986
  318.                 e-mail: bguthrie@nmaa.org
  319.                 http://hjs.geol.uib.no/guthrie/
  320.  
  321. See BRUCEymm.DOC file for revision history.
  322.  
  323. Please provide an Internet e-mail address on all correspondence.
  324.  
  325. 
  326.