Indirect Files

Indirect files allow you to have access to a file without explicitly
referencing its directory or changing your PATH statement.  An indirect file
is linked to another file on a network drive.  Any operation on the indirect
file is actually made on the file to which it points.

For example, suppose you have a file you reference often, such as a data or
an include file.  We ll use the file ORIGINAL.BAT which resides in the root
directory of the server HOST1 as an example.  The physical path of this file
is as follows:

C:\ORIGINAL.BAT

The network resource name for the C: drive is C-DRIVE.  The network path of
this file is as follows:

\\HOST1\C-DRIVE\ORIGINAL.BAT

With this information, you can set up an indirect file in another directory
to point to ORIGINAL.BAT

1.  Make sure the network resource where you will create the indirect file
    has the indirect file (I) access right enabled.  For information on
    setting ACL rights refer to "Shared Resources" in this manual.

2.  Log in to the server and redirect one of your drives to the network
    resource C-DRIVE on HOST1.  You can perform these functions through
    either the NET program or by NET command line.

3.  Change to the directory where you would like to place the indirect file.  In
    this example UTIL:

    CD UTIL

4.  Create the indirect file using the syntax:

    NET INDIRECT PATHNAME ACTUAL-NAME

    where PATHNAME represents the name of the indirect file you would like
    to create and ACTUAL-NAME represents the name of the file to link with
    the indirect file.  We'll name the indirect file INDIRECT.BAT:

    NET INDIRECT INDIRECT.BAT  \C-DRIVE\ORIGINAL.BAT

    Here we've specified the absolute path to the file INDIRECT.BAT will
    reference.  You can also give the relative path to ORIGINAL.BAT:

    NET INDIRECT INDIRECT.BAT  ..\ORIGINAL.BAT

    If you use the DIR command for the subdirectory, you will see the indirect
    file INDIRECT.BAT listed with the other files there.

     You will notice that the date and month of the indirect file cannot
     possibly exist.  Indirect files will have this date and time to help
     distinguish them from regular DOS files.  The NET DIR command will also
     help distinguish indirect files.  Note that the NET DIR command shows
     the I in the file attributes display as well as the name of the file  to which INDIRECT.BAT points.

     You may now access ORIGINAL.BAT from the UTIL subdirectory.  If you
     want to see the contents of ORIGINAL.BAT simply issue a TYPE command
     for INDIRECT.BAT:

     Type INDIRECT.BAT

     Since INDIRECT.BAT is a batch file, you can execute it by typing:

     INDIRECT

     The result would be the same as if you had typed:

     ..\ORIGINAL

     or

     C:\ORIGINAL

     You can also link other indirect files to INDIRECT.BAT, and have access
     to ORIGINAL.BAT from any other subdirectory.  For example, you could
     link the file IND2.BAT in the APPS subdirectory to INDIRECT.BAT.  To do
     this:

     1. Change to the APPS subdirectory.

     2. Type the command:

     NET INDIRECT IND2.BAT \C-DRIVE\UTIL\INDIRECT.BAT

     A directory of the APPS directory would now include the indirect file
     IND2.BAT.  Any requests to IND2.BAT would actually be performed on
     ORIGINAL.BAT.

     Note: The DELETE, RENAME and SET ATTRIBUTE functions are always performed
     on the indirect file, not the file to which it points.


LINKING INDIRECT FILES TO DIRECTORIES

     You can also create indirect files to reference directories.  That way
     you can have access to a entire directory of files without having to
     change your PATH statement or specifically reference  that subdirectory.
     This is useful if you have a directory of files you use often.   Follow
     the steps given previously, except this time link the indirect file to a directory.  For example:

     NET INDIRECT INDIRECT.DIR  \C-DRIVE\MACROS

     If you have the proper ACL rights for the directory MACROS you will be
     able to utilize any of the files within the directory, by referencing
     them through INDIRECT.DIR.  If you wanted to run the file TEST.EXE in
     MACROS you could type:

     INDIRECT.DIR\TEST

     This would be the same as typing:

     C:\MACROS\TEST


FILE LEVEL SECURITY

     One advantage of indirect files is that you can set access to a specific
     file without having to give that type of access to the entire directory.
     For example, if you give L (Look up) access to a network directory PROT
     (Short for PROTected), but want to be able read and write to the file
     ORIGINAL.DOC while in that directory, you can do the following:

     Place ORIGINAL.DOC in another network resource such as READWRIT and allow
     read and write access for that resource.

     Using the steps described earlier, create an indirect file such as
     INDIRECT.DOC in PROT linked to \READWRIT\ORIGINAL.DOC.

     All of the files in the PROT directory would only have L look up access,
     but you would be able to read and write to ORIGINAL.DOC through
     INDIRECT.DOC.

     Conversely, you can allow users access to PROT, but if they do not have
     the R and W access to READWRIT, they cannot read or write to ORIGINAL.DOC.

     Note:  Some text editors  read data from a file and then write over the
     previous copy when you save the file.  These functions can result in the
     text editor reading the data from the original file, then writing  the
     new version to the indirect file when you save it.  When this occurs,
     you no longer have an indirect file, but simply an updated copy of the
     original file.


THE NET EXPAND COMMAND

     When using indirect files, you can utilize the NET EXPAND to keep track
     of which file will finally be accessed.  This is especially useful if
     you have multiple layers of indirect files.  The NET EXPAND command,
     will also help you find the physical or network path of the indirect
     file.  You can use the NET EXPAND command four ways:  first, you can
     use the command with no switches:

     NET EXPAND IND2.BAT

     Using the example created earlier, you would see this output:

     \\HOST1\C-DRIVE\APPS\IND2.BAT

     This output tells you where the file exists relative to the network.
     In this case the file is located on the server HOST1, on the resource
     C-DRIVE in the subdirectory APPS.  If you use the Recurse (/R) switch
     for IND2.BAT:

     NET EXPAND/R IND2.BAT

     you will see this output:

     \\HOST1\C-DRIVE\ORIGINAL.BAT

     This switch instructs the NET program to recursively search through all
     the levels of indirect files until it arrives at the final file
     referenced.  Once again, the information given is relative to the files
     location on the redirected drive.  To find the actual physical location
     of IND2.BAT on the server, you would use the Physical (/P) switch:

     NET EXPAND/P IND2.BAT

     You would see the output:

     C:\APPS\IND2.BAT

     To find out the physical location of the file to which IND2.BAT finally
     resolves, you would use both the Recurse and Physical switches:

     NET EXPAND/P/R IND2.BAT

     You will see the output:

     C:\ORIGINAL.BAT.

     the physical location of the file to which IND2.BAT finally resolves.
