DDCBU : Dave Dunfields Copy/Backup Utilities
--------------------------------------------
These are a few little tools I've created over the years to greatly assist me
while copying directory trees to movement/backup devices:

DIRTLT  - Easily see how much data is in/under each level of a tree.
TSHOW   - Easy to see complete tree and depth
CCDIR   - Compare/Command(s) DIRectory
            DIR between two trees, easily move up and down tree levels.
            Compare and perform common commands on files and subdirectories. 
WSYNC   - Copy only New/Changed files in a directory tree to a backup copy.
DDCCV   - Improved ""
ISYNC   - Interactive ""
XWS     - Make it easy to WSYNC the same files from/to various systems.
SYNC    - My original DOS SYNC (from the 90s)
IBK     - Interactive BacKup: copy/view/compare/edit/delete files back and
            forth between two similar directory trees.
DDZBK   - Backup full tree to individual .ZIPs

CHANGED - \
CHGRST  -   \
CHGTST  -    >  This is a separate set of tools for backing up and
CHGBAT  -    >  otherwise manipulating recently changed files.
CHGTST  -    >
CHGREN  -    >  Please see CHANGED.TXT for more information.
RECENT  -   /
RECMD   - /

    -- Tools called by some of the above --
EDT     - Text Editor               > Use   F10 F F10   for help
CKDIR   - CHeck/create DIRectory    >   Most of these give command info
FVT     - FileViewText              >   when run with no arguments 
FVB     - FileViewBinary            >   - also some intreactive help
FCT     - FileCompareText           > Complete packages with documentation
FCB     - FileCompareBinary         > on my site.

NOTE: Some of these are .DVMs which means they run on Dunfield Virtual Machine,
a small Win32 application which doesn't need to be installed and doesn't leave
"droppings" or other files on your system.  Obtain it from my site.



DIRTLT: DIRectory Tree LisT
---------------------------
Do you ever need to copy a big directory tree onto media(s) that aren't large
enough to hold it?  Perhaps in creating a "permanent" copy on DVD(s), or to
flash drive(s) so you can take it with you or give it to someone?

You need to break it up into smaller trees.  Hopefully you can do this in a
manner which doesn't make the data organization too arbitrary, which leads to
the question:  How can you easily see how the data is laid out in a tree?

Sure, you could DIR/S - but that results in a huge file which does not give
the actual summary you need, it does show the size of each directory, but not
of the tree including the directories beneath. For large trees, be prepared to
spend time going through the listing, adding up sizes and making notes.

So far I've not found an easy "built in" way to do this under Windows, which
is why I created DIRTLT!  It gives a fairly concise listing of the directories
in a tree, each of which will have two sets of numbers:
  1 - The number of files and their total size within the directory itself.
  2 - "" PLUS the number of files and total size in subdirectories beneath.

This makes it MUCH easier to subdivide a directory tree in an intelligent
manner, allowing you to break it into sub-trees near a maximum size (size of
DVDs or flash drives) and grouped in a reasonable way.

DIRTLT is a utility that runs from a command prompt. This makes it easy to
redirect the output to a file for viewing and reference later.

use: DIRTLT -?
for details of the command syntax.



TSHOW: Tree SHOW
----------------
Shows the directory tree at and below a specified path, with information about
tree Depth, number of Subdirectories and number of Files.

I wrote this because when burning backup DVDs, I sometimes encounter to ISO
limit of a directory tree depth of 8 or fewer branches, and wanted to quickly
see the whole tree and which are the offending branches (I often just move
them up to the root, and include the TSHOW output so I can see where they
were).

use: DVM TSHOW ?
for details of the command syntax.



WSYNC: Windows SYNC
-------------------
Some of you may have used my DOS 'SYNC' utility (see below). I personally used
it a LOT to maintain daily current backups and I have missed it under Win64.
This version runs under Windows and works with long file names.

WSYNC 'synchronizes' a copy of a directory tree to contain any updated or
otherwise changed files. Only new/changed files are copied, which can make
updating a copy of a large tree a LOT faster. This makes a BIG difference if
all you want to do is update your backups with the days/weeks changes over a
large tree.

use: WSYNC -?
for details on the command syntax.

A few explainations:

 -D         - Causes WSYNC to automatically create directories which exist in
              the source but not in the destination. Otherwise you will be
              prompted for each directory to be created.
        NOTE: You will always be prompted if the root destination specified
              to the WSYNC command does not exist.
 -F         - Causes WSYNC to atomatically copy new/changed files from the
              source to the destination. Otherwise you will be prompter for
              each file. Note, you can reply 'A'll to the prompt which will
              cause WSYNC to auto-copy any remaining new/changed files in the
              subdirecotory it is working on.
 -O         - Causes WSYNC to display the output of the COPY commands is
              uses to copy the files. (See NOTE)
 -Cn(k)     - Sets the memory cache size allocated by WSYNC at startup.
              WSYNC needs to track directory lists and files within the active
              directory, and may exhaust it's cache on very large trees.
              By default 1024(k) or 1 megabyte is allocated for the cache.
 -Tn        - Set how many seconds older a file must be to trigger a copy.
              Default is 5 seconds (see NOTE).
 -R         - Perform a dryRun. Go through the motions, but don't actually
              copy files or create directories.
 -L[+]file  - Logs differences between the source and destination to the named
              text file.  Useful with -DFR to get a list of what has changed.
              (+ means append to the file, get one log from mltiple WSYNC)

WSYNC does/will NOT make changes to the source directory tree. It is all about
making backups, NOT about changing your source tree. I assume that you will
maintain the source tree as your wish it to be. WSYNC will warn you if files
in your backup no longer appear in the source, but it WILL NOT delete them
from the source.

WSYNC also does/will NOT copy files from the source over top of files in the
destination which have a newer timestamp.  You will be warned!

NOTE: These tools were built with the LCCWIN32 toolset, which is one of the
 best ways I've found so far to create simple/smallish Windows programs.

 A copied file should keep the "write time" of the source. Otherwise you have
 no way to determine which of two files has the most recently written data. I
 have not found a straightforward way to set the timestamps of "just written"
 files with LCC - anything that looks like it might accomplish this is part of
 the "Windows API" interface which would make WSYNC *MUCH* bigger and more
 complex!  My DOS 'SYNC' did this via a simple DOS call.

 The work-around I have come up with is to shell to the Windows 'COPY' command
 in order to copy the files. COPY does set the timestamp, but I find at least
 on my system the copies have "not quite" the same timestamp. Often it shows
 the file more recent than the original by 1-3 seconds. I have tested this on
 fast RAMdrives with "copy" taking much less than a single second, yet I still
 see timestamps that differ by several seconds.  This is the primary reason for
 the '-T' option - it allows you to set just how many seconds "older" a file
 must be to trigger a copy.

 I think this is an actual bug in Windows. A file copied by the OS will be
 exactly the same as the original, and should not show a different write time
 - Windows obviously tries to do this, but doesn't quite get it right!



ISYNC: Interactive SYNC
-----------------------
Does basically the same as SYNC and WSYNC but lets you interactvely select,
view and compare the files to "synchronize".  Makes a nice way to see exactly
what is different between two essentially the same trees.

Note: To do this, ISYNC uses an internal 64k memory "segment" to store detailed
information about the selected files... so it may fail with "SegmentOverflow"
when used on very large trees!



XWS: eXpress WSync
------------------
One thing I often use WSYNC for is to work on a project on multiple computers.
One day I may be in the lab, another day I may be at a desk upstairs.
Another day I might be somewhere else on a laptop. 

The files needed for a project may be spread across several directory trees,
and not wanting to move "everything", it can result in a number of WSYMC
commands, both to sync current files on one system TO a portable device, and
again to sync them BACK to a different system. And to further complicate it,
while the project directories are identical (except for most recent changes),
they may NOT be in the same drive/location from one system a another. For
example, my Lab desktop has a separate drive where many projects are stored,
but on my Laptops they may just be stored on the C: drive.

You "could" just write a bunch of batch files, but there could be many and it
gets tricky if you decide to change where something lives - it can mean a LOT
of .BAT file edits across several systems.

XWS makes the job a lot easier. You only creat one control file, and it figures
out where things are on a given system and automatically runs multiple WSYNC
commands (if it needs to - or any other backup/copy program) to save/restore a
backup by only copying the chnged files.

XWS has a control file called XWS.INI which I normally place on the backup
device in a directory wherein the backups will be copied.  See my example
XWS.INI for details on how it works.

eg: If I want to 'B'ackup my DOS(BOX) related files to drive E:
        XRS BE:\DB
    XRS will run WSYNC to synch specified directories to within E:\DB
    To 'R'estore them to another system:
        XRS RE:\DB

use: XWS -?
for details on the command syntax.



Interactive BacKup
------------------
Perform "File Operations" between similar directory trees letting you see all
files (scrollable list), which files differ (size/timestamp) and files/dirs
which have been added/removed!

For any file, you can COPY (SOURCE->DEST) / (DEST->SOURCE), or EDIT / VIEW
(as Text of Hex) / DELETE the file in either the SOURCE or DESTINATION trees.

**WHY** I created this to make it very easy to move "working" files around on
numerous desktops/laptops that I use frequently.  Projects are often updated
on one system and I later want to copy those changed to other systems where I
happen to work on the same thing later...  As these are often spread over large
trees of not-all related files and I don't want to copy the whole tree or
unrelated files also changed by concurrent work on other projects...

Command Options:
----------------
    -B      perform Build  only (implies -K)
    -R      perform Review only (temp file must exist)
    -K      Keep temporary file [*2]                        [R:\IBKDATA.TXT]
    -Mn     Memory to allocate (in 64k blocks)              [8]
             default of 8 (1meg) is enough to compare quite large trees
             increase if you get "?SegOver" error
    -N      Assume No to "Proceed"  (dry run)
    -P      disable Prompt after running commands:  saves you from having to
             press SPACE but prevents you from seeing output of command.
    -S      don't recurse into Subdirectories
    -Tn     set Time difference margin                      [5]
             sets the number of seconds the TIMESTAMPs must differ before
             IBK will consider them to not be the same [*1]
    -V      Verbose: shows more information during startup
    -Y      assume Yes to "Proceed" (don't prompt)


Indicators on the main screem:
------------------------------
   ' ' [:][path\...]name    this file is the same in SOURCE and DEST
    { [:]   ""          the SOURCE file has EARLIER TIMESTAMP
    } [:]   ""              ""                        LATER TIMESTAMP
    < [:]   ""          the SOURCE file is SMALLER
    > [:]   ""              ""             BIGGER
    [[-][:] ""          file only exists in SOURCE
      -                  [path\...] does not exist in DEST
    ][+][:] ""          file only exists in DEST
      +                  [path\...] does not exist in SOURCE

    The indicators show the status determined during initial scan of the two
    directories and DO NOT change as you perform operations from the individual
    file screen! - to remind you of which files you may have changed, ':' is
    shown after the indicators (before filename).


Keys on the main screen:
------------------------
      Up/Down               move selection one line
    PgUp/PgDn               "" one screen
    Home/End                "" to start/end
       ' '                  move to next entry starting with SPACE
        {                   "" '{'
        }                   "" '}'
        <                   "" '<'
        >                   "" '>'
        [                   "" '['
        ]                   "" ']'
       Tab                  "" not starting with SPACE
      Enter                 go to individual file screen
       ESC                  exit


Keys on individual file screen:
-------------------------------
        O                   cOmp SOURCE file with DEST
        F                   ctF  "" [*3]

        C                   Copy SOURCE file to DEST
        E                   Edit SOURCE file
        T                   view "" as Text
        H                   view "" as Hex
        R                   copy "" to Ramdisk [*4]
        L                   deLete ""

        K                   Kopy DEST file to SOURCE
        I                   edIt DEST file
        V                   View "" as text
        X                   view "" as hex
        M                   copy "" to raMdisk [*4]
        D                   Delete ""

       ESC                  return to Main screen


Executable String Patch
-----------------------
Some of IBKs operating parameters, are stored in strings within the IBK program
file IBK(.COMor.DVM)) and can be changed using my ESP tool:

    1:  The name of the temporary file created/used by IBK. [*2]
        This default to "R:\IBKDATA.TXT".
        You WILL want to change this if you DO NOT have a R: RamDrive!
        ** You can temp change the location for testing with: subst R path 
    2:  The command used for 'C'opy/'K'opy
    3:  """ c'O'mp
    4:  "" ct'F' [*3]
    5:  "" 'E'dit/ed'I't
    6:  "" 'T'ext/'V'iew
    7:  "" command used for 'H'ex/he'X'
    8:  "" copy to 'R'amdrive/ra'M'drive [*4]
    9:  " command used for de'L'ete/'D'elete

    In 2-9 commands, bytes higher than 0xF0 have special meaning:
    Bits:   7-4     always '1'
            3       "Proceed" prompt is issued before command executes.
            2       "Press SPACE" so you can see command output.
            1-0     01 = Insert SOURCE filename
                    10 = Insert DESTINATION filename
                    00 = If NOT present, this command is a "system" command. 
        If 1111xx00 IS present, the command is launched by direct exec(ution).
        The position of 1111xx00 marks the boundary between the executable
        file name and the operand line passed to the that file.
    **  This is important with the DVM edition of IBK because system() commands
        are passed back to the host OS, but exec() files are .DVM which are
        launched within the DVM virtual machine!
    

NOTES:
------
[*1] When writing a file, I've not found a way to set the timestamp(s) in the
    Windows compiler I'm using ... I want to do this because the copied file
    should be an EXACT COPY of the source. To work around this I shell to the
    Windows COPY command, which "mostly" preserves the timestamps.  I do find
    that it can differ by a couple of seconds - I suspect this is because of
    the OS conversion to/from universal time using the current system time.
    This option allows you to control the difference allowed.

[*2] IBK uses a Temporary file to record the file locations and differences
    showd. This will normally be deleted when VLC terminates, but can be kept
    if you want to process it yourself. The file is called "R:\\IBKDATA.TXT",
    and you will likely want to change it if you don't have an R: ramdrive
    (like I do [*4]). See the ESP section.
    The file format is:
        =path           subdirectory path (first one is always NULL)
        -path           "" does not exist in DEST
        +path           "" SOURCE
        ^filename       a file which is the SAME in SOURCE and DEST
        <   ""          "" which is SMALLER
        >   ""          "" BIGGER
        {   ""          "" which has an EARLIER TIMESTAMP
        }   ""          "" LATER TIMESTAMP
        [   ""          "" which only exists in SOURCE
        ]   ""          "" DEST

[*3] CTF (Compare Text File) is a utility I created to easily see exactly what
    is different in similar text files.

[*4] As I exaluate files for backup, I often have a second command prompt open
    on screen where I do other operations with files which may not be obviously
    related to files which are selected with IBK. To simplify testing against
    files in the backup folders, I have made it easy to copy backup files to a
    temporary location to  be able to access them at a constant location.
    I (personally) tend to use a ramdrive R: for such transient files.
        You can use my ESP too to change this location!



SYNC - Synchronizes two directory trees
---------------------------------------
NOTE: This is my original SYNC command for DOS that I write back in the late
90s.  It will run under Win32 but doesn't support "long" filenames!

I am imcluding for the sake of completeness, and because it may still be
useful to some.

SYNC (or any other proper backup program) DOES NOT work well in DOSBOX because
DOSBOX only "fakes" the INT 21h / 5701h function to set the timestamp on a file
as you write it. SYNC uses this to insure that copied files have the same time
as the original and DOSBOX doesn't support this (DOSBOX COPY doesn't preserve
timestamp either!)
---------------------------------------

SYNC is a program which updates one directory tree from another. SYNC
checks the timestamp of each file in the source tree against the same
file in the destination tree, and offers to copy the file only if the
source file has the most recent timestamp, or the file does not exist
in the destination directory tree.

SYNC also detects the following special out-of-sync conditions, and
prompts for the action to take:

 - Source file is older than destination.
 - File exists in destination, but not in source.
 - Timestamps are the same but file sizes differ.
 - Directory found in source does not exist in destination.
 - Directory found in destination does not exist in source.

SYNC is very useful to keep two systems synchronized and up to date. For
example, if you work on a desktop system, and routinely use a notebook
system when you are traveling, you can use SYNC before you leave to insure
that your notebook is up to date with your desktop, and again when you
return to insure that your desktop receives all the changes that you
performed while you were on the road.

SYNC is a 16-bit DOS program, however it supports long filenames in an
environment providing LFN support (Win9X/Win2K/WinXp, DOSLFN etc.)

command syntax: SYNC source_path dest_path [options]

 source_path = Newer directory tree
 dest_path   = Directory tree to update

options:
    /N  - allow Newer files in dest     [DOSbox]
    D=n - do not create new Dirs in top n levels of tree
    E=file  - specify file of files to Exclude

Options can be preset in SYNCOPT environment variable.
Copyright 1998-2012 Dave Dunfield - All rights reserved.
 /1[!]   = ignore/update! timestamp if exactly 1 hour difference
            Does not copy files which are the same size and have a timestamp
            which differs by exactly 1 hour. This is a work-around for a
            windows bug where the timestamp of a file changes by one hour
            when windows adjusts to or from daylight savings time.
            /1! updates the destination timestamp in this case.

 /A      = copy file Attributes
            When a file is copied, the attributes (Archive, Read-only,
            Hidden and System) of the destination file are updated to
            match the the source file.

 /C      = auto-Copy new files
            Automatically copies (without prompting) if the destination file
            is older, or does not exist.

 /D      = auto-create new Directories
            Automatically create subdirectories in the destination tree if
            they do not already exist.

 /E      - continue on Error
            Keeps going even if errors occur in opening individual files.

 /H      - ignore Hidden&system files/dirs
            Files/Directories with the Hidden or System attributes in either
            the source or destination tree are not processed.

 /I      - Ignore time/date, compare size/content only
            SYNC will pass files with different time/datestamps as long as
            their size and content (if /T) match.

 /L      - disable Long-filename support
            Prevents SYNC from using long filenames even if a LFN manager
            is present (Win*, DOSLFN etc.)

 /N      - Allows destination files to be NEWER that source. Normally SYNC
            woll prompt when the destination is newer (it might have changed
            by other means, however this presents a problem with DOSBOX which
            does not let SYNC copy the timestamp when it has copied a file.
            This means in DOSBOX the copied files are ALWAYS newer than the
            original files. This option is antimatically set under DOSBOX.

 /Q      - Quiet: reduce informational output
            Does not display source & destination paths when recursing
            through the directory tree.

 /R      - auto-override Read-only attribute
            Automatically copies (or deletes) files with the Read-only
            attribute set. Without this option, you will be prompted
            whenever a Read-only file is to be modified.

 /S      - auto-Skip safe copies
            Automatically skip (do not copy) if the dest file is older or does
            not exist. This is useful to test the operation of SYNC without
            actually copying the files, as it will only stop and prompt for
            out-of-sync conditions. This is also useful if you want to create
            an empty copy of a directory tree structure: SYNC source dest /D /S

 /T      - Test content of files
            Test content of files that appear to be identical (same time/date
            and size). This is time consuming, but it is an easy way to be
            sure that the data in two directory trees is absolutely identical.

 /V      - Verbose: display files processed
            Displays the name of each file that is processed.

 /X      - ignore eXtra dirs in dest.
            You will not be prompted to remove directories in the destination
            tree which do not occur in the source tree.

 /Y      - auto-Yes to unsafe operations
            Disable "Are you sure?" prompt for unsafe or out-of-sync
            operations.

 /~      - scan for SFNs in source
            Alerts you to any files in the source tree which only have "Short
            names". This is allow you to detect a condition under which a bug
            in windows can cause loss of data, for example:
            - You have a file called 'mylongfile.dat' which you copy onto
              the windows system using a means which does not preserve the
              LFN - windows now has a file with only the "short name":
              'MYLONG~1.DAT'
            - You subsequently copy a file called 'mylonghaul.dat' to the
              windows system using windows tools - windows now has another
              file with the name 'mylonghaul.dat', and assigns it a "short
              name" of 'MYLONG~2.DAT' (so far so good).
            - You XCOPY the files to a new location, windows happens to copy
              'mylonghaul.dat' firsts, creating 'mylonghaul.dat' and assigns
              at a "short name" of 'MYLONG~1.DAT' (at this point MYLONG~1.DAT
              did not previously exist at the new location), then the original
              'MYLONG~1.DAT' is copied, which overwrites 'mylonghaul.dat'.
            - In the end, you have only one file called 'mylonghaul.dat',
              which contains the data from 'MYLONG~1.DAT' the original data
              from 'mylonghaul.dat' has been lost.
            This can occur any time you have files which have "lost" their
            long filenames due to copying with non-LFN tools, and subsequently
            copy them with LFN aware tools - this is because windows "squirms
            around" the short name numeric assignments when it copies files.

 D=n     - do not create new Directories at top n levels of tree
            Prevents SYNC from creating/copying new directories at the top
            of the directory tree. Examples:
             D=1  - Prevents SYNC from prompting if the destination tree
                    does not exist. Useful to keep batch files from halting.
             D=2  - Prevent prompting at the top level of directories.
                    Useful to SYNC only directories already copied.

 E=file  - specify file of files to Exclude
            Specifies a file of files to exclude (one per line). Entries
            may be either filenames or directory names, and may contain
            wildcards:
                ? - Matches any single character
                * - Matches any string of characters
                . - has no special meaning (must match a '.')
            All paths must be relative to the starting path. NOTE that the
            match is done against the full relative path - so you must use
            a '*' wildcard to deal with preceeding directories, Examples:
                *.tmp       - Exclude any file ending with .tmp
                *\temp\*    - Exclude any file within a 'temp' directory
                tmp*        - Does NOT exclude any files beginning with 'TMP'
                              (excludes top-level dirs beginning with 'TMP')
                *\TMP*      - Excludes any file/dir beginning with 'TMP'
            An extension of .SNC is assumed if none is specified.

Options can be preset in SYNCOPT environment variable.
To disable an option preset in SYNCOPT from the command line, you can follow
it with '-'. Example: if /T has been preset in SYNCOPT, you can perform a
SYNC without /T by specifying: /T-

When SYNC detects differing files, or an out-of-sync condition, it will
prompt you with the available operations. You may enter one of the
following commands:

 A          - Automatically Copy remaining new/safe files in this dir.
 C          - Copy file from source to destination
 K *        - Copy file from destination to source (out-of-sync)
 D *        - Delete file from destination
 E *        - Delete file from source
 S          - Skip this file (do nothing)
 B          - Bypass remainder of this directory and proceed to subdirs
 L          - Leave this directory and all subdirs
 <esc>      - Enter error recovery menu. This offers:
               A - Abort SYNC and terminate
               C - Return to upper command menu
               D - Invoke a DOS shell

Commands marked '*' are considered unsafe, in that they may lose data.
A Copy command in which the destination file is newer than the source is
also considered unsafe. For these conditions, an "Are you sure" prompt
is issued.

NOTE: When prompted to create a destination directory, you may also type
'C' which create the directory, and automatically copy all files and sub-
directories contained within the source.

------------------------------------------------------------------------------
MAR/2011: I have updated SYNC with several new features, including support
for long filenames. I am also including DSYNC.COM, a copy of the original
SYNC that I wrote in 1998. Compared to SYNC.COM, DSYNC.COM :

  - Does NOT support long filenames (DOS 8.3 only).
  - Does not support /A, /E, /H, /L, /R, /~ or D= options described above.
  - Uses '/H' for the 1-hour workaround instead of '/1'.
  - Requires source_path and dest_path to be the first two arguments.
  - Does not recognize "arguments containing spaces".
  - Does not recognize multiple options unless they are separated by spaces.
  - Does not support the SYNCOPT environment variable.
  - Uses a simpler "DOS" file matching algorithm for E=
  - Does not accept 'C' to copy contents when creating a new directory.
  - Does not offer to remove extra directories in the destination tree.
  - Does not offer to override Read-only attributes (copy/delete fails).
  - SYNC.COM can handle a much larger file/directory name list.
  - DSYNC.COM uses only 64k of memory, SYNC.COM uses 256k.

------------------------------------------------------------------------------
AUG 2012: I have added a new "DOSYNC" utility to the package which I use to
simplify keeping large archive drives in sync. SYNCing an entire drive can
be problematic because:
  - SYSTEM directories on the drive may not be SYNCable, eg:
     "RECYCLER", or "System Volume Information"
  - There may be directories on the drive that you do not want to SYNC.
  - If you abort/fail for any reason, you have to reSYNC the whole drive.
  - Very large trees can overflow SYNC's internal buffers.

DOSYNC simply scans for directory names in the current directory, presents
a menu of the directories that it found allowing you to deselect ones that
you don't want, and then runs SYNC on each individual directory.
This resolves the problems mentioned above by:
  - SYSTEM & HIDDEN directories are automatically deselected.
  - You can manually deselect any additional directories that you don't want.
  - You can deselect directories prior to a failure point.
  - SYNC only has to buffer from each root level directory.
DOSYNC has functions to deselect all, before/after the cursor, directory
names containing <=' ' or >='~' characters etc. Press '?' on the main screen
to see the available commands.

To perform SYNC, DOSYNC must know the location of the SYNC.COM command, and
the options to pass to it. You are prompted with these items before the SYNC
commands run. You can change the default values with: DOSYNC /D
NOTE:   If 'Cmd' is empty, DOSYNC looks for SYNC.COM in your PATH.
        'Opt' defaults to: ?"?N?" ?"?D\?N?" /H /R
            ?N = Insert Name of directory
            ?D = Insert destination prefix **
            ?" = Insert '"' only if ?N contains <=' ' or >='~' characters
            ?? = Insert single '?'

** ?D inserts a destination prefix from the DOSYNC command. For example,
if you executed DOSYNC with the command: DOSYNC J:
then '?D' would be replaced by 'J:'.

DOSYNC accepts the following command line options:

/D  = edit Default Cmd/Opt values.
/T  = Test mode - shows SYNC commands, but does not execute them.


DDZBK: DaveD Zip BacKup
-----------------------
One of the simplest and most efficent ways to backup a full directory tree is
to "ZIP" it into a compressed .ZIP file - Windows can access these .ZIPs as if
they were complete direcrory trees.  but... since the .ZIP is "compressed"
Windows has to expant it first. Not much of a problem for little sets of files,
however accessing a ZIP of a large tree can take a fair bit of time and disk
space.

So I created DDZBK - this ZIPs a complete directory tree into a individual .ZIP
files (one for each subdirectory).  This makes the resulting .ZIPs much easier
to access, while retaining most of the compression/size benefit of using .ZIPs.

The DOS DDZBK uses "pkzip" to perform the compression, while the DVM version
uses "7zip" (both available at my site). Too see the actual commands that would
be used: run DDZBK without -G (go)  -  use NO options for command help!


------------------------------------------------------------------------------

Dave Dunfield   -   https://dunfield.themindfactory.com
       Download and see my product CATALOG.
