home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 24 / CD_ASCQ_24_0995.iso / vrac / fill506.zip / FILL.DOC < prev    next >
Text File  |  1995-05-29  |  19KB  |  404 lines

  1. FILL.DOC
  2. 05/29/95
  3.  
  4. The FILL program is designed to help you move or copy files off a hard disk
  5. while reducing the amount of wasted space on the destination disks.  Internally,
  6. it does this by sorting the file names so the largest files are moved/copied
  7. first.  It then moves or copies whatever files can fit on the floppy, skipping
  8. any that can't.  Features:
  9.  
  10.   * Can either move or copy the files to the resulting location
  11.   * Can go onto to multiple diskettes as desired, beeping if desired when
  12.     the next disk is expected
  13.   * Can move the files in file name order or any of standard ordering
  14.     categories
  15.   * Can be used to split up files which are too big to fit on a single disk
  16.   * Can create a status/transaction file for you, showing what was copied/moved
  17.   * Can label the output diskette, providing some patterns like sequence numbers
  18.     and dates which it will fill in for you
  19.   * Some times useful for network transfers where standard MOVE command doesn't
  20.     always work
  21.   * Can review and delete if desired any files which are already in the
  22.     output destination (e.g. already on the output diskette)
  23.   * Can reformat the whole disk if files are going to drive A or B
  24.   * Can specify an input file ("@flistfile") which contains the files to be
  25.     copied.
  26.  
  27. Limits:
  28.   * Routine can only process the first 500 files found.  It ignores the rest of
  29.     them.
  30.   * Routine can only review for deletion the first 200 files in the output
  31.     location.
  32.   * Routine does not provide any cool features to fix up destination drives
  33.     that have surface errors.  If it encounters an error, it just beeps, gives
  34.     you an error message, and returns to DOS.
  35.   * Routine will not format the output diskette for you.
  36.   * Switching diskette densities is not recommended (e.g. intermixing 720K
  37.     diskettes with 1.44MB diskettes may cause errors)
  38.   * Routine's continual testing for new diskette (/CONTINUAL) only works if the
  39.     diskette was formatted using DOS 4.0 or later.  That's the version that
  40.     puts volume sequence numbers on the diskettes.  One way to insure this if
  41.     you're using the newer versions of DOS is to do a quick-reformat of your
  42.     floppies whenever you'd normally do a DEL A:*.*.  I do this with a QDR.BAT
  43.     command that has the following:
  44.  
  45.         FORMAT %1 /Q /U /V:Bruce
  46.  
  47.     I then say "QDR A:" or "QDR B:".  It invokes an unconditional quick format
  48.     and applies a volume label on the diskette (to avoid the prompt).  If the
  49.     diskette does not have a sequence number, DOS tells you it can't be
  50.     quick-formatted and asks if it can do the full format instead.
  51.  
  52.  
  53.  
  54. Note on copying/moving files to multiple diskettes:
  55.  
  56. I didn't think this was confusing but a lot of people don't seem to understand
  57. the technique of how files are moved to multiple diskettes.
  58.  
  59. Let's say you have six files:
  60.  
  61.         A_FILE.ZIP      500K
  62.         B_FILE.ZIP      300K
  63.         C_FILE.ZIP      650K
  64.         D_FILE.ZIP      200K
  65.         E_FILE.ZIP      450K
  66.         F_FILE.ZIP       25K
  67.  
  68. You're moving these files to blank 1.2MB diskettes and you have the default
  69. /MULTI and /ON settings.  The program checks how much space is available on the
  70. destination drive and comes back with 1.2MB.
  71.  
  72. It scans the input files and internally sorts them by descending size.  It then
  73. looks for the biggest file in the file list and comes back with C_FILE.ZIP at
  74. 650K.  Will this file fit on the destination drive?  Yes.  It retains that
  75. information, figures there is now 550K left on the output drive, and checks for
  76. the second biggest file.  A_FILE.ZIP is 500K.  Will that also fit?  Yes.  So now
  77. there's 50K left.  The next biggest file is E_FILE.ZIP at 450K.  Will that fit?
  78. Nope.  Check the next biggest.  This continues until it reaches the file
  79. F_FILE.ZIP which is only 25K.  That's the biggest file that will fit in the
  80. remaining 50K.
  81.  
  82. So it has three files to move.  What order should it move them?  You have /ON
  83. set so it's going to move them in file name order.  So it moves the following
  84. files in the following order:
  85.  
  86.         A_FILE.ZIP      500K
  87.         C_FILE.ZIP      650K
  88.         F_FILE.ZIP       25K
  89.  
  90. Next diskette.  Same process.  This time it processes the remaining files:
  91.  
  92.         B_FILE.ZIP      300K
  93.         D_FILE.ZIP      200K
  94.         E_FILE.ZIP      450K
  95.  
  96.  
  97. Specifying parameters:
  98.  
  99. Parameters for this program can be set in the following ways.  The last setting
  100. encountered always wins:
  101.   - Read from an *.INI file (see below),
  102.   - Through the use of an environmental variable (SET FILL=whatever), or
  103.   - From the command line (see "Syntax" below)
  104.  
  105.  
  106. The FILL.INI file:
  107.  
  108. FILL will read a FILL.INI file if one is found.  (You can specify a different
  109. file name if desired.) The file is an ASCII text file that can be created
  110. maintained by hand.  The file can consist or one or more command line
  111. parameters (only those that begin with a "/"; no multi-word ones), one statement
  112. per line.  For example:
  113.         /COPY
  114.         /CONTINUAL
  115.  
  116. The file can also contain comments which are blank lines or any line beginning
  117. with:
  118.         ;    (semi-colon)
  119.         :    (colon)
  120.         '    (quote)
  121.  
  122. FILL looks for the initialization file in your default subdirectory first.  It
  123. then searches for it in the subdirectory where the executable was and then goes
  124. through your DOS path.
  125.  
  126. Passing in "/-I" or "/INULL" skips loading the INI file.  This saves some
  127. execution time as the program does not need to search your path for the file.
  128.  
  129.  
  130.  
  131. Syntax:
  132.  
  133.     FILL [ source-filespec | @flistfile ]
  134.       [ [ /TO ] dest-drive: | [ /TO ] dest-drive:\path\ ]
  135.       [ /MOVE | /COPY ] [ /PROMPT | /-PROMPT ] [ /Iinitfile | /-I ]
  136.       [ /OVERWRITE | /-OVERWRITE | /OVERSKIP | /OVERASK ]
  137.       [ /Ox | /O-x ] [ /Xfilespec ]... [ /WIPE | /-WIPE ] [ /MULTI | /SINGLE ]
  138.       [ /SPLIT ] [ /LETTER | /-LETTER ] [ /LABEL=label [ /START=n ] ]
  139.       [ /Fstatfile [ /S+ | /S- | S* ] [ /CONTINUAL ] [ /TIME | /-TIME ]
  140.       [ /BEEP | /-BEEP ] [ /FAKE ] [ /Q ] [ /? ]
  141.  
  142. where:
  143.  
  144. "source-filespec" is the file specification for what you want to move.  You can
  145. specify a drive and path and file wildcards if necessary (e.g.  "C:\TEMP\*.BAT")
  146. but otherwise it defaults to your default drive and directory and takes "*.*".
  147. Note that the program cannot handle any request for more than 500 files at a
  148. time.
  149.  
  150. "@flistfile" allows you to have a variety of file specifications saved in a text
  151. file named "flistfile".  You cannot have more than 50 file specifications in
  152. this file (and you're still limited to the 500 files total).  Each line should
  153. consist of a file name with optional drive and path information.  Blank lines
  154. and lines beginning with semi-colons, colons, or quotes are ignored.
  155.  
  156. "dest-drive:" or "dest-drive:\path" (or "/TO dest-drive:" or "/TO
  157. dest-drive:\path") tells the routine what drive or path to move the files to.
  158. In many cases, the routine doesn't really care whether the source specification
  159. precedes or follows the destination specification.  If either parameter ends
  160. with a colon (e.g. "A:") or slash (e.g. "C:\QB45\"), the routine will presume
  161. that's the destination specification and the other one must be the source
  162. specification.  If either parameter contains a wildcard, the routine will
  163. presume that's the source specification and the other one must be the
  164. destination specification.  So "FILL A: *.BAS" is the same as "FILL *.BAS A:".
  165. The original default is "A:" (or "/TO A:").
  166.  
  167. "/MOVE" says to move the files instead of copying them.  Initially defaults to
  168. "/MOVE".
  169.  
  170. "/COPY" says to copy the files instead of moving them.  Initially defaults to
  171. "/MOVE".
  172.  
  173. "/PROMPT" says to prompt for each filename before moving it.  Initially defaults
  174. to "/-PROMPT".
  175.  
  176. "/-PROMPT" says to not prompt for each file.  Initially defaults to "/-PROMPT".
  177.  
  178. "/Iinitfile" says to read an initialization file with the file name "initfile".
  179. The file specification *must* contain a period.  If no drive or path information
  180. is specified, the program will search for initfile beginning in your default
  181. subdirectory and then going throughout your DOS path.  The use of an
  182. initialization file is optional.  Initially defaults to "/IFILL.INI".
  183.  
  184. "/-I" (or "/INULL") says to skip loading the initialization file.
  185.  
  186.  
  187. "/OVERWRITE" says to overwrite same-named files in the destination path.
  188. Initially defaults to "/OVERSKIP".
  189.  
  190. "/-OVERWRITE" says to abort if any same-named files are found in the destination
  191. path.  Initially defaults to "/OVERSKIP".
  192.  
  193. "/OVERSKIP" says to skip any file that already exists in the destination path.
  194. The counts aren't accurate in this case.  This is initially the default.
  195.  
  196. "/OVERASK" says to prompt if same-named files exist in the destination
  197. directory.  Initially defaults to "/OVERSKIP".
  198.  
  199. "/Ox" and "/O-x" allow you to specify the copy order for the files.  "x" can be
  200. one of the following:
  201.  
  202.         N = file name
  203.         D = file date and time
  204.         S = file size
  205.  
  206. If you precede the "x" with a dash ("-"), the sort will be done in reverse
  207. order.  Note that this parameter does not determine which files are copied; it
  208. only determines what order they are actually copied.  Since the order that the
  209. file tends to show up in a DOS DIR listing is based on creation order, this
  210. sequence may be relevant to how the files ultimately show up.  Initially
  211. defaults to "/ON".
  212.  
  213. "/Xfilespec" says to exclude certain filespecs from being moved.  You can
  214. specify up to 10 exclusion parameters but each must have their own /Xfilespec
  215. statement.  For example, to move all files except those with a BAS extension,
  216. you could say "FILL /X*.BAS".
  217.  
  218.  
  219. "/WIPE" says that if the destination drive has files on it, prompt the user
  220. for whether these files should be deleted or not.  Six sub-options show up in
  221. this case:
  222.  
  223.     Do *NOT* delete the x file(s)    Don't delete anything
  224.     List file(s)                     List the files but don't delete any of
  225.                                      them.  The user will be reprompted for
  226.                                      these four options after pressing a key.
  227.     Select file(s) to delete         List the files and allow the user to
  228.                                      select any to be deleted.  Keys:
  229.                                         * Cursor keys -- move among list
  230.                                         * Space       -- select that file
  231.                                         * Ctrl-Enter  -- select all files
  232.                                         * Ctrl-bs     -- deselect all files
  233.                                         * Enter       -- process those tagged
  234.                                         * Esc         -- skip processing
  235.                                      After pressing Enter, the selected files
  236.                                      will be deleted.  You will then get the
  237.                                      standard four prompts again.
  238.     Delete all file(s)               Delete all files in the specified
  239.                                      directory.  Subdirectory files will not
  240.                                      be deleted.
  241.     Reformat the diskette            If your output drive is either A or B,
  242.                                      the program will shell to DOS and execute
  243.                                      a "FORMAT d:" command.  This (and the
  244.                                      next) sub-option will result in the
  245.                                      subdirectories being eliminated, something
  246.                                      which the prior sub-options don't do for
  247.                                      you.
  248.     Quick-reformat the diskette      If your output drive is either A or B
  249.                                      and you're running under DOS 5.0 or higher,
  250.                                      the program will shell to DOS and execute
  251.                                      a "FORMAT d: /Q" command.
  252.  
  253. Initially defaults to "/-WIPE".
  254.  
  255. "/-WIPE" reverses /WIPE.  Initially defaults to "/-WIPE".
  256.  
  257. "/MULTI" says to go to a second disk if all of the files can't fit on the first
  258. diskette.  Initially defaults to "/MULTI".
  259.  
  260. "/SINGLE" says process only one diskette at a time and to not prompt for the
  261. next diskette once the first gets filled up.  Initially defaults to "/MULTI".
  262.  
  263. "/SPLIT" says to split up large files which otherwise would not be able to fit
  264. onto the output disk.  For example, /SPLIT is useful when you have a 1.8MB file
  265. that you're trying to copy or move to a 1.2MB or 1.44MB diskette.  Files are
  266. split only if an empty diskette in the output destination would not be able to
  267. support the file; it will not split up a 800KB file just because the 1.2MB
  268. output diskette only has 600KB free.  /SPLIT must be used with a specific file
  269. request; not a wildcarded one.  Split files are given (by default) the file
  270. extensions of .001, .002, etc (see /LETTER option below for an exception to
  271. this) until all necessary splitting is accomplished.  To put them back together
  272. again, use the DOS COPY copy with the /B option.  For example:
  273.  
  274.         COPY TEST.001/B+TEST.002/B TEST.ZIP
  275.  
  276.  
  277. "/LETTER" says that when /SPLIT is specified, use the first letter of the
  278. original file extension when naming the split up file.  For example, TEMP.ZIP
  279. would become TEMP.Z01, TEMP.Z02, etc.  This does not affect files which do not
  280. get split.  Initially defaults to "/-LETTER".
  281.  
  282. "/-LETTER" says that split up file names should be numeric only.  TEMP.ZIP
  283. becomes TEMP.001, TEMP.002, etc.  This does not affect files which do not get
  284. split.  Initially defaults to "/-LETTER".
  285.  
  286. "/LABEL=label" specifies the volume label to be written to the output disk.
  287. By default, the label is not changed.  The label can be a quoted mixed-case
  288. string.  It can contain several replaceable lowercase only parameters: "mm" is
  289. replaced with the two-digit month, "dd" is replaced with the two-digit day, "yy"
  290. is replaced with the two-digit year, and "n" or "nn" or "nnn" is replaced by the
  291. sequence number of the disk.  All numeric fields are padded to the left with
  292. zeroes as necessary.  If the current date is November 7, 1993:
  293.  
  294.         /LABEL="BKyymmdd nn"
  295.  
  296. will label the first first "BK931107 01", the second disk "BK931107 02" etc.
  297. Note that labels can be no longer than 11 characters in length.  All characters
  298. except the replaceable parameters will be translated to uppercase characters.
  299.  
  300. "/START=n" specifies the first sequence number to use in place of "n", "nn", or
  301. "nnn" in the /LABEL parameter.  Defaults to "/START=1".
  302.  
  303. "/Fstatfile" specifies the name of a status file to be used.  This status file
  304. is a text file that reports on what's been processed by the program.  If it
  305. exists already, the status file is appended to, not overwritten.  A sample of
  306. some lines from the status file using the /S* option (which is not the default):
  307.  
  308.   FILL results for  /copy *.exe /ftest.txt /beep /wipe /s* /split
  309.   Being run on 11-07-1993 at 17:58:10
  310.  
  311.   Label        FileName    Date     Time                Size Operation
  312.  
  313.   TEST93 #01   AV.EXE       09/29/93 00:50:58          70,282 SKIP
  314.   TEST93 #01   BC.EXE       08/19/92 23:59:00         150,562 SKIP
  315.   TEST93 #01   BFIND.EXE    08/02/93 23:07:08          60,016 SKIP
  316.   TEST93 #01   VBDOS.EXE    08/19/92 23:59:00         555,520 COPY
  317.  
  318.   BRUCE        AV.EXE       09/29/93 00:50:58          70,282 SKIP
  319.   BRUCE        BC.EXE       08/19/92 23:59:00         150,562 SKIP
  320.   BRUCE        BFIND.EXE    08/02/93 23:07:08          60,016 SKIP
  321.  
  322. "/S+" specifies that the only files to be written to the status file are those
  323. files that actually get copied/moved.  This is the default.
  324.  
  325. "/S-" specifies that the only files to be written to the status file are those
  326. files that did not get copied/moved.  Since the skipping is determination is
  327. done with each disk, the status file may show the same file name as "SKIP" over
  328. and over again.
  329.  
  330. "/S*" specifies that the status report should contain all files copied/moved as
  331. well as skipped.  This can be a huge report.
  332.  
  333.  
  334. "/CONTINUAL" is used if you want the routine to continually check your floppy
  335. drive to see when a new diskette has been put in and continue once it recognizes
  336. this has happened.  The only time you'd have to press a key is if you want to
  337. stop processing diskettes (in which case you'd press Escape).  This option is
  338. only available if you're using DOS 4.0 or higher and only works for disks that
  339. have been formatted using DOS 4.0 or higher (it uses the serial number on the
  340. disk in order to determine that the disk has been replaced).
  341.  
  342. "/TIME" says to show how much time it took for the transfers, showing you
  343. a bytes copied/moved per second.
  344.  
  345. "/-TIME" says to skip the bytes per second information.  This is initially
  346. the default.
  347.  
  348. "/BEEP" says to beep once the routine is done doing its thing (a high tone
  349. followed by a low one).  It will also beep whenever it's time to stick in a new
  350. diskette (a low tone followed by a high one).  Initially defaults to "/BEEP".
  351.  
  352. "/-BEEP" says to not beep upon completion.  Initially defaults to "/-BEEP".
  353.  
  354. "/FAKE" turns off the actual copying of files.  It basically puts you into
  355. simulation mode so you can see what it would do, how many disks it would take,
  356. et cetera.
  357.  
  358. "/Q" turns off the file-by-file status reporting.
  359.  
  360. "/?" or "/HELP" or "HELP" shows you the syntax for the command.
  361.  
  362.  
  363. Return codes:
  364.  
  365. FILL returns the following ERRORLEVEL codes:
  366.         0 = no problems, all files copied
  367.         1 = no problems, but some files skipped since /-MULTI
  368.       250 = too many entries in @flistfile file
  369.       251 = couldn't find @flistfile file
  370.       252 = had DOS errors copying/moving the files (bad sectors found)
  371.       253 = had problems copying/moving the files
  372.       254 = no files found to copy/move
  373.       255 = syntax problems, or /? requested
  374.  
  375.  
  376.  
  377. Author:
  378.  
  379. This program was written by Bruce Guthrie of Wayne Software.  It is free for use
  380. and redistribution provided relevant documentation is kept with the program, no
  381. changes are made to the program or documentation, and it is not bundled with
  382. commercial programs or charged for separately.  People who need to bundle it in
  383. for-sale packages must pay a $50 registration fee to "Wayne Software" at the
  384. following address.
  385.  
  386. Additional information about this and other Wayne Software programs can be found
  387. in the file BRUCEymm.DOC which should be included in the original ZIP file.
  388. ("ymm" is replaced by the last digit of the year and the two digit month of the
  389. release.  BRUCE312.DOC came out in December 1993.  This same naming convention
  390. is used in naming the ZIP file that this program was included in.) Comments and
  391. suggestions can also be sent to:
  392.  
  393.                 Bruce Guthrie
  394.                 Wayne Software
  395.                 113 Sheffield St.
  396.                 Silver Spring, MD 20910
  397.  
  398.                 fax: (301) 588-8986
  399.  
  400. See BRUCEymm.DOC file for additional contact information.
  401.  
  402. Foreign users:  Please provide an Internet e-mail address in all correspondence.
  403.  
  404.