A r c h i v e F i n d e r
What is it ?
Archive Finder (AF) is a program that searches files on a disk. A bit
like Peter Norton's FileFind/FileLocate (FF) or WhereIs. e.g. I need to
know where my *.DOC files are located, the program finds and displays
them, very very easy.
But since then compression era started, we have more and more files
Archived, ARJed, ZIPped, ARCed into archives. To find them out quite
quickly, very few programs were available when AF came out. This
version of Archive Finder can be compared in a way to SST from Keith
Ledbetter or to Vernon Buerg's FileView (FV), except that you get more
flexibility and *FREE SOURCE CODE* in Turbo Pascal.
This is neither Commercial nor Shareware, nor Freeware. It is real public
domain. The author has completely abandonned his rights on it. His name
must be mentionned when you use AF or part of it in a package or program.
Archive Finder recognizes .ARJ .ZIP .PAK .ARC .LZH .ZOO and some Mac .SIT
Archive Finder will never WRITE to your disk (except if redirected). So,
no harm, no data loss is possible. All it does is READ in a very
Yes, but how ?
The correct syntax for Archive Finder is :
C:\> AF [FileMask] [-Parameter(s)] [/Parameter(s)] [...]
The symbols `[` and `]` mean that all parameters are optional. You could
simply enter AF
(Don't... 'Could take quite a long time as this lists ALL files in and out
archives on drives C, D and E).
[FileMask] represents the DOS definition of the files you wish to find.
So if you would like to list all the .DOC files, you would enter :
C:\> AF *.DOC
If you omit this mask, AF considers you're looking for all the files *.*
20 different masks can be searched simultaneously.
AF accepts another wildcard `#` which replaces any digit (`0'...`9`).
C:\> AF *.### will find HELLO.001 BACKUP.321 A.000
but not HELLO.01 BACKUP.12T A.
Since version 1.14, AF also recognizes the extended masks of 4Dos 3.x and
so NDOS's too. That means you can place then `*` at the beginning and/or
anywhere in the name or extension.
Not so clear ? Let's see some examples :
C:\> AF *A*.* picks up every file containing an `A` in it's name or ext.
this is identical to `AF *A`
C:\> AF *A*.* gets every file containg an `A` in its name only, any
extension is valid.
C:\> AF A*A.* finds all files with name starting and ending with `A`,
C:\> AF A*B*A.* searches all files with name starting and ending with `A`
and having a `B` anywhere between the two, any extension.
AF A?B*A.* locates all files with name starting and ending with `A`
and having a `B` at the third position.
Suppose you wish to search for DOC*.* files.
Don't add systematically `.*` at the end of your masks. It's tiring.
The above example can be written easier `AF DOC*`.
The ending `*` is not even useful since AF would add it automatically.
So `AF DOC` is tedious enough. (I am still waiting for the computer
reading in my mind, taking it's orders DIRECTLY at the source. Hope I
live long enough to `see` that !).
The [1-9A-Z] and other enhancements of 4Dos 4.0 and Borland's Grep are
for the future (these are called `regular expressions`). Please take note
that the file AF.INC is the standalone Pascal source of the mask matching
mechanism. It's very short. Take a look at it and re-use it at will !
Command line parameters
Parameters can be prefixed (preceeded) by either `-` or `/`. Most of
them can be cumulated together.
Some parameters change the state of `boolean` (True/False) values.
In the list below, they are listed with a `+` or `-` sign to indicate
the default value.
You can either inverse the value or stick it to True or False. See below.
/G+ Global search
This tells AF to search for files on disk. If this option is turned
off, AF will only search in archives.
/R initial diRectory
If this options is not specified, AF starts in `\` (current disk's
/R must be immediately (no whitespace) followed by the directory
e.g.: AF /RC:\UTIL
Specifying then final `\` is not necessary, except if the root
directory is asked for.
/S+ Sub directories too
This will make AF look in the directories situated below then
initial (/R) directory.
/C Current directory only
This is identical to AF /R. /S+
/M Only this mask when searching into archives. Use this if you wish
to search in FREE*.ZIP :
This mask is a regular DOS mask (*DOC*.ZIP not allowed). Only one
mask is allowed here.
If this option is not set, AF looks for /M*.*
/A Only look for archives whatever their contents. This option is
meant to `give an idea` of the number of archives present. It only
gives the archive names (and their size if the /F parameter is
specified). You can use the /M option to only look for the LZH
archives : AF /A /M*.LZH (or AF -am*.lzh).
If you use the /F switch, you can sort the archives by size :
AF -af | Sort
You can also use file masks and the /N switch (preventing the word
`Archive` to appear). This is very useful for grouping all the archives
containing one particular kind of file to execute a command on them :
AF -A BBS.AD /N /M*.ZIP >FILELIST
^this creates a file called FILELIST containing the full path name
of all the ZIP archives containing the file BBS.AD.
If you use 4Dos or NDos, you can then enter :
For %a in (@FILELIST) do Pkzip -d %a BBS.AD
/P Do not look inside the archives. This options, of course, speeds
up the search making AF act like any normal file finder.
/E Make AF also write the name of the archives not containing the
files matching the mask.
if the /G option is on, the directories not containing files matching
the mask(s) will also be displayed.
/N Only display the full path name of the files. I could have called
this option `batch mode`. It is useful to create file lists that
can be re-used by archivers or 4Dos programs or whatever.
/W Like Dos's /W switch for DIR : Wide display. Does only display
the file name (nor drive nor dir).
/T Display the size the file really occupies (if not in archive) or
the size it would occupy (if in archive) when unpacked to the
specified or implied disk. MSDOS uses disk space by clusters. So
one file, even 1 byte long occupies 512 bytes on a diskette and
at least 1024 bytes up to 8192 bytes on a hard disk depending on
the FORMAT that was made.
Specifying /T immediately followed by the name of the drive on which
you want to unpack the files, AF calculates the size it would
REALLY occupy on this particular disk. /T0 means current drive.
This options automatically activates the /F switch (display totals).
AF /GTC /MARCHIVE.ARC *.PAS
tells the size occupied by the *.PAS files (contained in ARCHIVE.ARC)
once unpacked on disk C:
AF /GTA /MARCHIVE.ARC *.PAS
same but on A:
AF /GT0 /MARCHIVE.ARC *.PAS
if `0` (zero) is specified after the /T, AF detects what disk to
use default or the one specified by /R.
AF /GU /T- /MARCHIVE.ARC *.PAS
if you use `-` (minus sign) as the disk's name, AF will not look
for the real size. Use this when modifying an alias execution or
using the /U switch.
/F Display the totals. Number of files found in archives, not in archives
and total, with the respective sub-total REAL size.
/U Only display the totals. This automatically activates /F+ and /T0.
You can remove /F switch by specifying /F- after /U
/* High speed search : AF will not look for directories with an
extension like SILLYSFT.DIR
This REALLY speeds up the search. It is only active when AF does
not have to look inside archives.
/D Lets you select a date after and/or before which the file has been
AF *.COM /d+011580 : all .COM files modified on Jan,15 80 or after
AF *.COM /d-011590 : all .COM files modified on Jan,15 90 or before
AF *.COM /d=011590 : all .COM filed modified on Jan,15 90
AF *.COM /d+011590 /d-011590
If no date is specified after /D+ /D- or /D=, it means today.
AF *.* /d= displays all the files modified/created today
/I In a same way, this lets you select files to display depending on
AF *.COM /i+1024 : all .COM files greater or equal 1024 bytes
AF *.COM /i-1024 : all .COM files below or equal 1024 bytes
AF *.COM /i=1024 : all .COM files of exactly 1024 bytes
/L Select which drives to search on. By default, AF looks on C, D and E.
AF *.COM /lABC searches .COM files on A: B: et C:
/L0 (zero) means only look on current drive or /R specified
/B AF 1.19 and up have another look for displaying files, a bit like SST
Supersonic Search Tools from Keith Ledbetter). The /B option is used
to deactivate this look and give a more Dos-conventionnal display.
/) This option tells you what AF understood while parsing your
command line. VEERRRYYY useful to understand why something does not
work as you would. If you have a problem with a command line, retype
it (or recall it) and add /) or -)
AF can be used redirected. That is using the `|` and/or `>` sign.
For example, to store the result of a search in file TEMP.LST you just
add >TEMP.LST to your command line :
Ex: AF *.PAS >PASLIST
You could also ask for a pause between pages by typing
AF *.PAS | More
or get the sorted archives list in a file
AF /AF |Sort >LISTARCH.TXT
Note you can group commands together.
AF -cp same as AF /c /p
Parameters /M... /R... and /L... can only be at the end of such a grouping :
AF -cpm*.ZIP is valid
AF -cp*.ZIPm is not
You can also specify explicitely if the parameter should be activated or
disabled. Just add a `+` or a `-` (minus) immediately after the command
(command grouping is still possible). This is very useful to force a
parameter if you use batches or synonyms/alias/doskeys.
AF /C+P+ same as AF /cp
because -c et -p are `-` by default
AF analyses the parameters one after the order from left to right. If an
option appears twice on the same command line, is important :
AF /P/P does nothing
To understand all the power of AF, you should try the following examples :
Find all *.DOC files wether they are on the disk or placed in an archive :
Find all *.DOC files only in archives :
Af *.doc /G-
Find all *.DOC files on the disk without looking in archives :
Af *.doc /P
Find all *.DOC files on the disk without looking into archives, searching
only in directory \DOS and it's subdirectories :
Af *.doc /P /R\DOS
Find all *.DOC files on the disk, not in archives, only in directory \DOS :
Af *.doc /P /S /R\DOS
Find all *.DOC files on the disk, not in archives, only in current dir :
Af *.doc /P /C
Find all *.DOC files in the current directory and in *.ZIP archives (of current
Af *.doc /G- /C /M*.ZIP
Find all *.DOC files in the current dir and in *.ZIP archives, displaying
REAL occupation size and total sizes :
Af *.doc -t0fm*.ZIP
can also be written
Af *.DOC /T0 /F /M*.ZIP
Find all *.DOC files on the disk, not in archives, displaying full path names
(for use in batch files) :
Af *.doc -pn
Find all *.DOC and *.TXT files on the disk and within archives
Af *.doc *.txt
Find all *.DOC files, not in archives, on disk H: only :
Af *.doc -plh
Find all *.DOC files, only in archives being on H:
Af *.doc -glh
Find all files modified or created today
Users of 4Dos / CED / DosEdit / DosKey
You HAVE TO make aliases (synonyms) with AF !
This is a FileFind equivalent (just faster)
Syn FF AF /P /* /R%1 %2 %3 for CED
FF=AF /P /* /R%1 for 4Dos
To view one/many archives in current dir (this is the most powerful one) :
Syn V=AF -CG-t0M%1 -l0 %2 %3 %4 for CED
V=AF -cg-t0M%1 -l0 for 4Dos
With this you can do :
v View all archives contents
v a View all archives, any type, name starting with an `A`
v a:*.ZIP View all A:*.ZIP archives
v * *.DOC View all *.DOC files contained in archives of current dir
v * /g View everything in the current dir, inside and outside archives
and so on...
Even a DIR command (you won't get the directory names) :
DDIR=AF /PC %1
A DIR displaying real file sizes :
FDIR=AF -pct0f %1
p=don't look in archives
c=only in current dir
t0=detect current or specified disk
Remark: In the examples of FF and V, the first parameter (%1) is passed
to /R or /M. If you wish to add parameters to the command line
with a /U for instance, you will have to enter :
FF .\ /U
V * /U
The `*` alone is the widest mask for AF. It's MSDOS *.*'s
equivalent. *.* will work also but is much tedious.
If you missed the beginning
I'm sorry, since version 1.25 of AF is the first English version, I won't
waste time/energy translating all the list.
- 1.25 English version
This program is placed in public domain WITH ITS SOURCES. Anyone can use,
give away, modify or include all or part of it at the only condition of
explicitly giving proper credit to it's author. When I say anyone, I
really MEAN it, even for commercial purposes, even for CDROMS...
- Correctly handle SIT (mac) files and add CPT (mac compactor) formats
- Sorts (that's not sure)
- File exclusions
- Limit searches to n files
- Command execution on found files
- improvements of -) option
- Debugging of masks containing a #
- Support of all TPZ archives
- Use of an environment variable and/or config file to modify AF's default
options (you can recompile it if you have nearly any version of TP/BP),
changing the default options to you convenience
Minitel (France) 3615 DP
For BBS write to JC BOGGIO
Hermes HQ BBS (France) (33) (1) 69 00 76 72
ILink net PASCAL and COMPRESS conferences
(on Almac BBS)
CompuServe (I hate it) 100117,3213
Usenet [email protected]
FidoNet via Almac BBS to JC BOGGIO but I don't have
the node number and the correct address.
French mail Jean-Christophe Boggio
8, rue de la Corne
37370 Chemill sur Dme
to JrB for writing LhFind (which searches in Yoshi's LZH). It was
to Philip Burns, the author of PibCat for the ZOO format
to Vernong Buerg's FileView which gave me the idea of the /W command
(i never used it before)
to Master Yoshizaki (Lharc's author) for making me discover compression
to Master Jung (RK not CG) for writing the best ever (the easiest and
most powerful) archiver, I named ARJ.
to Keith Ledbetter (SST author) for the challenge
to PkWare for their PkArc and PkZip 1.1 programs (PkZip 2.x is really
an awful bug nest. I hate being forced to use it.
to Patrick `Next` Teil for his TPZ archiver and his shell for AF
to all of those who reported bugs, ideas (GEX, California, Kadorbra,
Next, Solex and the other ones)
to you for using Archive Finder.
Author: Jc Boggio Diffusion: Public domain with Turbo Pascal source code
Version: 1.25 Date: March, 2 1993