home *** CD-ROM | disk | FTP | other *** search
- BFIND.DOC 1 Revised: 10-18-96
-
- The BFIND.EXE program adds Boolean logic to DOS's FIND command. In most ways,
- it's identical to the FIND command except:
-
- * Adds AND, OR, NOT, and XOR options to searches (finding all lines with
- "Apples" or "Bananas", for example).
- * Allows you to specify the starting column of the desired string.
- * Adds a pause (/P) option to have the output pause every 24 lines.
- * Avoids need to include the search string in quotation marks so you can
- use the program more easily in batch commands.
- * The input file specification can include standard DOS wildcards or an
- external file (@listfile) containing the files to be processed, e.g:
- BFIND /I "SOUND" *.DOC > TEMP.X
- * Allows you to skip the by-file heading information ("----- filename").
- * Can avoid showing file name header if no hits in the file (/-EMPTY option).
- * Handles DOS text files (lines end with CR/LF), Mac text files (lines end
- with CR), or Unix text files (lines end with LF).
- * Should be able to handle input files with line lengths of 5000 characters
- or more. Should skip the remainder, allowing you to use the wildcards
- more easily.
- * Allows you to remove non-text characters from the output or even specify
- your own character-translation file for them.
-
- The only FIND feature that BFIND does *not* support is the ability to specify
- multilple single input files without using wildcards ("FIND ... BRUCE.TXT
- BRUCE.DOC" works--"BFIND ... BRUCE.TXT BRUCE.DOC" does not). In addition, you
- cannot do piping into BFIND (e.g. DIR | BFIND ...).
-
- The DOS FIND command allows you to find lines in a text file which contain a
- given string. You can also have the program tell you how many lines met the
- search criteria without actually viewing them which is an ideal way to find out
- how many times a given string appears in your file. You can even use FIND to
- tell you how many total lines are in a given file just by requesting a string
- that you know will never appear in your file like "#X$S$" and using the /C
- (count) parameter.
-
- BFIND adds to these capabilities. It gives you the power of AND, OR, NOT, and
- XOR, allowing you to find any line, for example, that contains both "Apples" and
- "Oranges" or to present any lines that contain either "Bananas" and "Pears". In
- addition, you can do column-specific searching, finding only those lines, say,
- that contain "PRINT" beginning in column 10.
-
- BFIND allows you to specify wildcards for the input file. You can also put the
- list of file names to process in a text file and tell BFIND to process the files
- listed therein.
-
-
- Specifying parameters:
-
- Parameters for this program can be set in the following ways. The last setting
- encountered always wins:
- - Read from an *.INI file (see BRUCEINI.DOC file),
- - Through the use of an environmental variable (SET BFIND=whatever), or
- - From the command line (see "Syntax" below)
-
-
-
- BFIND.DOC 2 Revised: 10-18-96
-
- Syntax:
-
- BFIND [ /V | /-V ] [ /C | /-C ] [ /N | /-N ] [ /I | /-I ] [ /P | /-P ]
- [ /-HEADER ] [ /-EMPTY ] [ /FILTER | /FILTER=filename ]
- [ /LINES { line1-line2 | line1 linect } ... ]
- [ /MONO ] [ /Iinitfile | /INULL ] [ /W | /W0 | /-W ] [ /? ] [ /?&H ]
- { search } { filespec | @listfile } [ >filename ]
-
- where:
-
- "/V" says to find those items that do NOT match the specification. Initially
- defaults to "/-V".
-
- "/-V" says to find those items that DO match the specification. This is
- initially the default.
-
- "/C" says to show the count of the items found (no individual lines). Initially
- defaults to "/-C". One use for the "/C" parameter is to count the number of
- lines in a file; search for all lines that do *not* (/V) contain a totally
- improbable string and then tally them. E.g.
-
- BFIND /V /C "&^&^" MYFILE.TXT
-
- "/-C" says to skip counting the items. This is initially the default.
-
- "/N" says to number the output lines. Initially defaults to "/-N".
-
- "/-N" says to skip numbering the output lines. This is initially the default.
-
- "/I" says to make it a case-insensitive search. So a search for "Apple" will
- find "APPLE", "apple", ApPle", etc.
-
- "/-I" is the opposite of /I and is typically the default. A search for "Apple"
- will not find "APPLE".
-
- "/P" says to have the display pause every 24 lines. Initially defaults to
- "/-P".
-
- "/-P" says to not bother pausing the output display. This is initially the
- default.
-
- "/-HEADER" says to skip the normal -----infile output line that appears before
- the results of the output.
-
- "/HEADER" says to include the headers. This is initially the default. The
- header lines look like this:
-
- --------- C:\VBDOS\BFIND.BAS
-
- "/EMPTY" says that the -----infile header information is to be shown even if the
- file doesn't have any hits in it. This is initially the default.
-
- "/-EMPTY" says to only show the -----infile header information if the file has
- hits. Initially defaults to "/EMPTY".
-
-
- BFIND.DOC 3 Revised: 10-18-96
-
- "/FILTER" says to remove all nonprintable characters from the output. Initially
- defaults to "/-FILTER".
-
- "/-FILTER" says to not bother removing the nonprintable characters from the
- output. This is initially the default.
-
- "/FILTER=filename" specifies that a filter is to be applied and all non-same
- character replacements are in the file "filename". This feature is of very
- limited usefulness in the BFIND program unless you're reading native word
- processing files. If this excites you for some reason, get the ZIP READymm.ZIP
- and read the documentation for the READY program. The feature works identically
- in both programs.
-
- "/LINES line1-line2" says to restrict the search to lines between line numbers
- line1 and line2 inclusive. You can have multiple line requests in any order
- such as "/LINES 1-10 90-100 30-50". The routine skips all lines after the
- largest line number is encountered. Defaults to "/LINES 1-9999999".
-
- "/LINES line1 linect" says to restrict the search to lines beginning with line1
- and continuing for a total of linect lines. So "/LINES 10 20" is actually the
- same as "/LINES 10-29".
-
- "/MONO" (or "/-COLOR") does not try to override screen colors. Initially
- defaults to "/COLOR".
-
- "/COLOR" (or "/-MONO") allows screen colors to be overridden. This is initially
- the default.
-
- "/Iinitfile" says to read an initialization file with the file name "initfile".
- The file specification *must* contain a period. Initfiles are described in the
- BRUCEINI.DOC file. Initially defaults to "/IBFIND.INI".
-
- "/INULL" says to skip loading the initialization file.
-
- "/W" says to pause with a "Press any key to continue" message after the program
- finishes if any hits were found. Note that this parameter is ignored if
- redirection out is being used.
-
- "/W0" says to pause afterward whether any hits were found or not. This is
- initially the default if the program is run under Windows. Note that this
- parameter is ignored if redirection out is being used.
-
- "/-W" says to not pause afterward at all. This is initially the default if the
- program is run under DOS.
-
- "/?" or "/HELP" or "HELP" shows you the syntax for the command.
-
- "/?&H" gives you a hexadecimal and decimal conversion table.
-
- "search" is described below.
-
-
- BFIND.DOC 4 Revised: 10-18-96
-
- "filespec" tells the routine which file or files are to be processed. The
- specification can include path and wildcards if desired. One thing I find
- useful with wildcards is that is allows me to create an output that concatenates
- all of the input files together with the typical headers (/HEADER) that separate
- each portion. This requires searching for all lines in a file so you need to
- use the /V option and look for an improbable string. For example, to
- concatenate all *.TXT files together as a new file called TEMP.NEW and have the
- little header between each, say this:
-
- BFIND /V "$#" *.TXT > TEMP.NEW
-
- "@listfile" allows you to have a variety of file specifications saved in a text
- file named "listfile". Each line in the file should consist of one file
- specification, each of which can include a path and wildcards if desired. Blank
- lines and lines beginning with semi-colons, colons, or quotes are ignored. An
- example using this is provided at the end of this documentation.
-
- ">filename" redirects the output to a text file. This automatically invokes the
- /-P option. This is useful for saving the found lines into another file. For
- example:
-
- BFIND "Bruce" TEMP.TXT > TEMP2.TXT
-
-
-
- BFIND.DOC 5 Revised: 10-18-96
-
- For search, the syntax is:
-
- [ ( ]... search_item [ boolean [ ( ]... search_item [ ) ]...] [ ) ]...
-
- where:
-
- ( and ) are used to group items
- search_item is shown below
- boolean is AND, OR, or XOR (NOT is included with search_item)
-
- for search_item, the syntax is:
-
- [ NOT ] "string" [ column ]
-
- where:
-
- NOT is obvious
- string the string to search; the quotation marks are typically not
- required unless the string contains a space or a reserved word
- column is the column in which the string must be found.
-
- So, let's cover some examples:
-
- BFIND "Bugs Bunny" OR "Elmer Fudd" TEST.TXT
-
- Finds any lines in the file TEST.TXT containing either "Bugs Bunny" or "Elmer
- Fudd" in them.
-
- BFIND (Apples or Oranges) AND NOT Pears TEST2.TXT
-
- Finds any lines in the file TEST2.TXT which contain the words "Apples" or
- "Oranges" in them and ignores any lines containing "Pears". Note that the
- quotes around the search words are not required unless the words include spaces
- or unless they could be confused with some other keywords. "BFIND OR OR AND
- TEST3.TXT" might cause the program to get confused since "OR" and "AND", which
- you want to look for, are also keywords.
-
- BFIND /C "Bugs Bunny" AND Martians TEST.TXT
-
- Gives you a total for the number of lines containing both "Bugs Bunny" and
- "Martians".
-
- The search string can include any text characters. It can also contain ASCII
- codes, created either using the Alt key in combination with the numeric keypad
- (e.g. Alt-228 to get a Sigma character) or else by embedding a hexadecimal code
- (in the form &Hxx) or a decimal code (in the form \nnn) in the text. These
- codes are described in the BRUCEHEX.DOC file. For example, to find the smiley
- face character in a file called TEST.TXT, either of the following work:
-
- BFIND "" TEST.TXT
- BFIND \001 TEST.TXT
-
-
- BFIND.DOC 6 Revised: 10-18-96
-
- If you search for more than one word without using a Boolean operator, BFIND
- presumes you wanted the words searched with an "AND" Boolean operator. So this:
-
- BFIND Print Form *.TXT
-
- is the same thing as saying:
-
- BFIND Print AND Form *.TXT
-
- If you wanted to search for the *phrase* "Print Form", you'd have to say:
-
- BFIND "Print Form" *.TXT
-
- You can press the Esc key to abort the search early.
-
- BFIND, unlike FIND, typically doesn't require the search string to be in quotes.
- As a result, you can create a text file (presume it's called C:\BAT\PHONE.TXT)
- containing phone numbers or something and then create a batch file (like
- PHONE.BAT) that looks like this:
-
- BFIND %1 %2 %3 %4 %5 C:\BAT\PHONE.TXT
-
- When you want to find a phone number, you just say "PHONE name". This is a
- little more natural that using FIND which would require that you enclose the
- name in quotes. You can still use the Boolean operators in BFIND; the batch
- file above would allow up to five parameters.
-
- If you have multiple phone books, use the @listfile option in the batch file.
- For example, I have four phone files I search; a personal one (PHONES.TXT), a
- list of e-mail addresses (PHONMAIL.TXT), a list of work-related phone numbers
- that are distributed to the office (EBBPHONE.TXT), and an office list
- (OBAPHONE.TXT). My @listfile is called C:\MINE\PHONE.LST and contains these
- lines:
-
- c:\mine\phones.txt
- c:\mine\phonmail.txt
- c:\mine\ebbphone.txt
- c:\mine\obaphone.txt
-
- My PHONE.BAT file contains this line:
-
- BFIND /I /P /-EMPTY %1 %2 %3 %4 @C:\MINE\PHONE.LST
-
-
-
- BFIND.DOC 7 Revised: 10-18-96
-
- Return codes:
-
- BFIND returns the following ERRORLEVEL codes:
- 0 = no problems, string found
- 1 = no problems, string not found
- 250 = operation aborted by pressing Escape
- 255 = syntax problems, file not found, or /? requested
-
-
- Author:
-
- This program was written by Bruce Guthrie of Wayne Software. It is free for use
- and redistribution provided relevant documentation is kept with the program, no
- changes are made to the program or documentation, and it is not bundled with
- commercial programs or charged for separately. People who need to bundle it in
- for-sale packages must pay a $50 registration fee to "Wayne Software" at the
- following address.
-
- Additional information about this and other Wayne Software programs can be found
- in the file BRUCEymm.DOC which should be included in the original ZIP file.
- ("ymm" is replaced by the last digit of the year and the two digit month of the
- release. BRUCE512.DOC came out in December 1995. This same naming convention
- is used in naming the ZIP file that this program was included in.) Comments and
- suggestions can also be sent to:
-
- Bruce Guthrie
- Wayne Software
- 113 Sheffield St.
- Silver Spring, MD 20910
-
- fax: (301) 588-8986
- e-mail: bguthrie@nmaa.org
- http://hjs.geol.uib.no/guthrie/
-
- See BRUCEymm.DOC file for revision history.
-
- Please provide an Internet e-mail address on all correspondence.
-
-