home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 12 / CD_ASCQ_12_0294.iso / vrac / xset400.zip / XSET.DOC < prev    next >
Text File  |  1993-12-21  |  53KB  |  1,341 lines

  1.  
  2.                ╔═════════════════════════════════════════════╗
  3.                ║     XSET 4.00 : Extended SET Instruction    ║░░
  4.                ║                                             ║░░
  5.                ║      (C) 1991,92,93 STERN Marc              ║░░
  6.                ╚═════════════════════════════════════════════╝░░
  7.                 ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  8.  
  9.  
  10.     Everything you always wanted to put in an environment  variable  but
  11.     were afraid to ask DOS for . . . 
  12.  
  13.         XSET: The easy way to write efficient batch files.
  14.  
  15.     XSET allows you to put EVERYTHING you want  in  a  variable  of  the
  16.     current DOS environment and use it as if you assigned it the value  with
  17.     the standard DOS command 'SET'. You will be able to write very efficient
  18.     batch files including string manipulation, calculation, ...
  19.  
  20.     XSET is the most powerful environment variables manipulation program
  21.     you ever saw. It also has a very easy and intuitive user interface (very
  22.     close to the DOS 'SET' command). It is not a  resident  program;  it  so
  23.     cannot interfere with any of your other applications.
  24.  
  25.     XSET is fully compatible with MS-DOS (from 3.30), DR-DOS, NDOS & 4DOS.
  26.  
  27.  
  28.     XSET has seven major features:
  29.     ═════════════════════════════
  30.  
  31.      - XSET permits  to  catch  the  output  of  any  command  (internal  or
  32.        external) or program and put it into an environment variable.
  33.  
  34.      - XSET has built-in commands to modify the output of  a  program  or  a
  35.        string given on the command-line (extract a part of a string, ...)
  36.  
  37.      - XSET has a built-in full  floating-point  calculation  functionality:
  38.        You can program incremental loops, input  a  calculation  string  and
  39.        output the resulting number, ...
  40.  
  41.      - XSET can manage variable contents of more than 128  characters  (your
  42.        path can now be as long as you want).
  43.  
  44.      - XSET has other built-in commands to give you access  to  some  system
  45.        data (date, time, ...)
  46.                   
  47.      - XSET has built-in commands to clear  all  environment  or  restore  a
  48.        previously saved one.
  49.                 
  50.      - XSET gives you  access  to  high-level  user  interface  input/output
  51.        (line-editing, colors, windows, boxes, ...).
  52.  
  53.  
  54.      More than sixty commands to do all what you need.
  55.  
  56.  
  57.                                                                     Page 1
  58.  
  59.                        ╔═════════════════════════════╗
  60.                        ║      Table of contents      ║░░
  61.                        ╚═════════════════════════════╝░░
  62.                         ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  63.       
  64.  
  65.     The Shareware concept .................................... Page 2
  66.  
  67.     How to use XSET .......................................... Page 3
  68.  
  69.     Examples of use .......................................... Page 4
  70.  
  71.     Syntax explanation ....................................... Page 7
  72.  
  73.     Input explanation ........................................ Page 7
  74.  
  75.     Options and commands description ......................... Page 8
  76.       Input related flags .................................... Page 8
  77.       Prompt related flags ................................... Page 9
  78.       String related flags ................................... Page 10
  79.       Other flags ............................................ Page 11
  80.       Order of execution of /options ......................... Page 13
  81.       Input commands ......................................... Page 14
  82.       Date & time commands ................................... Page 15
  83.       Disk & file commands ................................... Page 16
  84.       Other commands ......................................... Page 19
  85.       Special flags .......................................... Page 20
  86.  
  87.     XSET & XSET_MSG variables ................................ Page 21
  88.  
  89.     Installation ............................................. Page 22
  90.  
  91.     Problems ................................................. Page 22
  92.     
  93.     Batch file programming: Hints & tips ..................... Page 24
  94.  
  95.     Additional information - How to contact the author ....... Page 25
  96.  
  97.     Appendix: E-mail address from other sites ................ Page 25
  98.  
  99.  
  100.                                                                     Page 2
  101.  
  102.                        ╔═════════════════════════════╗
  103.                        ║    The Shareware concept    ║░░
  104.                        ╚═════════════════════════════╝░░
  105.                         ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  106.  
  107.  
  108.     This package is Shareware.
  109.  
  110.     That means that you may try it for evaluation and, if you like  it,  you
  111.     should consider to pay the registration fee (see the  file  'XSET.REG').
  112.     You will then become a registered  user  and  so  have  access  to  free
  113.     support, free correction of acknowledged bugs and free upgrades.
  114.  
  115.     Shareware also mean that you may distribute this package everywhere  and
  116.     to everybody you want, providing that you always distribute the complete
  117.     package. If you have access to any BBS, FTP server, E-mail server or any
  118.     other kind of software distribution, feel free to share  it  with  other
  119.     people; this may be useful for them and the more people  will  use  (and
  120.     register) a shareware program, the more stable it will be and  the  more
  121.     functionalities could be added.
  122.  
  123.  
  124.     Warning:   If you paid to get this package (e.g., it  was  onto a floppy
  125.     ───────    with other programs, you downloaded it from a BBS), you  only
  126.                paid for the physical support (the floppy,  the  transmission
  127.                fee, ...); this does not replace the registration fee.
  128.  
  129.  
  130.     Note to software distributors:
  131.     ─────────────────────────────
  132.  
  133.          Nobody is allowed to make any  benefit  by  distributing  the  XSET
  134.          package. Only regular distribution fees are allowed (price  of  the
  135.          floppy, of the network connection, ...).
  136.  
  137.  
  138.  
  139.                                                                     Page 3
  140.  
  141.     How to use XSET:
  142.     ═══════════════
  143.  
  144.     XSET will always  assign  what  you  tell  it  into  a  DOS  environment
  145.     variable. The main goals of XSET are: 
  146.  
  147.       - to ask a question to the user (through the keyboard),
  148.       - to catch the output of a program or a command,
  149.       - to get pieces of information like current date and  time,  timestamp
  150.         or size of a file, ...
  151.       - to modify a string (contained in another variable, in  a  parameter,
  152.         ...) like changing it to lower-/upper-case, performing a  search  on
  153.         it,  calculating  the   result   of   a   mathematical   expression,
  154.         substituting a sub-string by another or extracting a part of it,
  155.       - to handle variables longer than 128 characters.
  156.  
  157.  
  158.     There are four ways to use XSET.
  159.  
  160.     1. Like the normal DOS 'SET' command:
  161.        XSET myvar="This is a test string"
  162.  
  163.     2. To get an input from the user:
  164.        XSET answer
  165.  
  166.     3. To catch the output of a program or a command:
  167.        dir c:\programs\myprog.c | XSET myvar
  168.  
  169.     4. To get various system or environment information:
  170.        XSET myvar TIME
  171.  
  172.     Furthermore, to attain a high level of functionality  you  may  add,  to
  173.     each of the above syntaxs, several option flags to  modify  the  default
  174.     behavior of XSET (for example /UPPER to translate into upper-cases, ...).
  175.  
  176.  
  177.       Syntax:     XSET [/OPTIONS...]  <dosvar>
  178.       ──────      read a string from standard input
  179.  
  180.                   XSET [/OPTIONS...]  <dosvar>="string"
  181.                   equivalent to the DOS command 'SET'
  182.  
  183.                   XSET [/OPTIONS...]  <dosvar>  COMMAND  [arguments ...]
  184.     
  185.  
  186.           ╔══════════════════════════════════════════════════════╗
  187.           ║    Type XSET /? to get the full description          ║░░
  188.           ║    of all functionalities (parameters and effects).  ║░░
  189.           ╚══════════════════════════════════════════════════════╝░░
  190.             ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  191.  
  192.  
  193.     Remark: Intensive use of XSET (and more  generally  of  DOS  environment
  194.              variables) may require that you expand the  size  of  your  DOS
  195.              environment space through the SHELL command. See  the  PROBLEMS
  196.              section for more details. 
  197.  
  198.                                                                     Page 4
  199.            
  200.     Examples of use:
  201.     ═══════════════
  202.  
  203.      Remark:  In all  the  examples,  the  command  XSET  and  its  built-in
  204.               commands are typed in upper-case and the environment variables
  205.               names are in lower-case. This is only  for  readability;  when
  206.               you type it, you may mix lower-cases and  upper-cases  as  you
  207.               like. The case is only significant for arguments  strings  you
  208.               enter on the command-line.
  209.  
  210.  
  211.      1)      XSET datvar DATE
  212.         Assigns the current system date into the variable 'datvar'
  213.  
  214.         Type the DOS command 'SET' to see all the  environment  variables;
  215.         you will get something like this:
  216.            ...
  217.            COMSPEC=...
  218.            DATVAR=dd-mm-yy  (where dd,mm,yy are replaced by current day, 
  219.                              month and year)
  220.            ... (other variables)
  221.  
  222.         You can now use the variable 'datvar' in a batch file:
  223.            ECHO the date is %datvar%
  224.  
  225.  
  226.      2)      XSET /COLOR LIGHTRED /PROMPT "Enter your name: " name 
  227.         Inputs  a  string  from  the  keyboard  (as  usual,  the  answer  is
  228.         terminated by <Enter>) and assigns it into the variable 'name'.  The
  229.         prompt appears in the specified color (or the  equivalent  attribute
  230.         on monochrome displays).
  231.  
  232.         You can now use the variable 'name' in a  batch  file  to  select  a
  233.         personalized environment for each user:
  234.            ECHO Hello %name%, have a good work session
  235.               CD \%name%
  236.  
  237.  
  238.      3)         You can write a batch file with automatic loops
  239.  
  240.  
  241.            rem ------------------
  242.  
  243.            set loop=1
  244.  
  245.         :next
  246.  
  247.               .......
  248.               anything you want
  249.               .......
  250.  
  251.               XSET /MATH loop=%loop% + 1
  252.               if not %loop% == 20 goto next
  253.  
  254.         rem ------------------
  255.  
  256.                                                                     Page 5
  257.  
  258.      4)         You can write a batch file where the user may enter  
  259.                 a calculation and use it as a number
  260.  
  261.       rem ------------------
  262.                                           
  263.       XSET /MATH /PROMPT "Enter your calculation: " calc
  264.  
  265.         echo result = %calc%
  266.  
  267.        rem ------------------
  268.  
  269.  
  270.  
  271.      5)         More elaborate example of a login procedure
  272.  
  273.           rem ---------------------- LOGIN.BAT --------------------------------
  274.  
  275.            @echo off
  276.           cls
  277.  
  278.         :BEGIN
  279.           rem       Ask login name from keyboard
  280.           rem       ----------------------------
  281.           XSET /PROMPT "Enter login name : " login
  282.  
  283.           rem       Test if directory corresponding to login name already exist
  284.           rem       -----------------------------------------------------------
  285.           if exist c:\%login%\nul goto OK
  286.  
  287.           rem       Directory does not exist, ask to create it
  288.           rem       ------------------------------------------
  289.           echo:
  290.           echo Login '%login%' does not exist.
  291.           rem       Only "yYnN" keys are allowed
  292.           rem       ----------------------------
  293.           XSET /PROMPT "Do you want to create it? (Y/N)" /UPPER ask KEY "YN"
  294.  
  295.         if %ask% == N goto BEGIN
  296.  
  297.           rem       Create directory
  298.           rem       ----------------
  299.           md c:\%login%
  300.  
  301.           :OK
  302.           set ask=
  303.  
  304.         rem     Go to user's directory and branch to personal
  305.         rem     batch file if any.
  306.         rem     ---------------------------------------------
  307.           cd \%login%
  308.           if exist autouser.bat autouser.bat
  309.  
  310.           rem -----------------------------------------------------------------
  311.  
  312.                                                                     Page 6
  313.  
  314.      6)         You are able to use a single password input for several 
  315.                 network connections
  316.  
  317.           rem -----------------------------------------------------------------
  318.  
  319.           echo off
  320.           cls
  321.  
  322.           rem    Ask login name from keyboard
  323.           rem    ----------------------------
  324.           XSET /PROMPT "Enter login name : " login
  325.  
  326.           rem    Ask password from keyboard
  327.           rem    --------------------------
  328.           XSET /PROMPT "Enter password : " passwd PASSWD
  329.  
  330.           rem    Connection to several network nodes
  331.           rem    -----------------------------------
  332.         net use node1 ... %login% %passwd%
  333.         net use node2 ... %login% %passwd%
  334.         net use node3 ... %login% %passwd%
  335.  
  336.           rem    Overwrite variable containing password (to be sure)
  337.           rem    --------------------------------------
  338.         set passwd=something_longer_that_password_to_be_sure
  339.  
  340.           rem    Clear variable containing password (to free environment)
  341.           rem    ----------------------------------
  342.         set passwd=
  343.  
  344.           rem -----------------------------------------------------------------
  345.                    
  346.  
  347.  
  348.  
  349.      7)         And much more ...
  350.                 See also DEMO.BAT and ENVEDIT.BAT
  351.  
  352.                                                                     Page 7
  353.  
  354.     Syntax explanation:
  355.     ══════════════════
  356.  
  357.     [...] are optional arguments;
  358.     if they are not specified, a default one is assumed.
  359.  
  360.     {...} are mandatory arguments;
  361.     if they are missing from  the  command-line,  they  are  read  from  the
  362.     standard input device (usually the keyboard or, if using redirection,  a
  363.     file or the output of another command).
  364.  
  365.     Strings arguments have to be included  in  double  quotes  (")  if  they
  366.     contain  any  special  characters   like   characters   interpreted   by
  367.     COMMAND.COM. See remark in section 'Problems'.  This  implies  that  all
  368.     double quotes will  be  removed  from  the  strings  arguments.  Strings
  369.     arguments to option flags also have to be quoted ("")  if  they  contain
  370.     spaces or tabs.
  371.  
  372.  
  373.  
  374.     Input editing:                                                      
  375.     ═════════════
  376.  
  377.     When you input a string from the keyboard, you may use  several  edition
  378.     facilities:
  379.  
  380.     When a default string is proposed:
  381.      - if any editing character (Home, <-, ->, ...) is hit you may edit  the
  382.        proposed string,
  383.      - otherwise, default string is erased and replaced by the new input you
  384.        type in; this feature is only active for the first key you hit.
  385.  
  386.     Valid keys:   Home         Begin of line
  387.                   End          End of line
  388.                   Left/Right   One character left/right
  389.                   Insert       Toggle insert on/off
  390.                   Delete       Delete current  character
  391.                   BackSpace    Delete previous character
  392.                   Ctrl-home    Erase to begin-of-line
  393.                   Ctrl-end     Erase to end-of-line
  394.                   Escape       Erase whole input
  395.                   Enter        Accept input
  396.  
  397.     If  a  timeout  is  specified  (see  /TIMEOUT  flag)  the  function  may
  398.     automatically return if no key is hit before the specified time.
  399.  
  400.  
  401.                                                                     Page 8
  402.  
  403.     Options and commands description:
  404.     ════════════════════════════════
  405.                 
  406.     Remarks: - In the following descriptions, the word 'function' stands for
  407.                both  'option  flag'  and  command.  This  only   means   any
  408.                functionality of XSET. 
  409.  
  410.              - The word 'result' in the option flags description stands  for
  411.                the current contents  of  the  variable  at  the  moment  the
  412.                considered  flag  is  processed  (i.e.,  after  the   already
  413.                executed functions).
  414.  
  415.  
  416.     Input related flags:
  417.     ───────────────────
  418.  
  419.     These are modifiers that can be used with all functions.
  420.  
  421.  
  422.     /DEFAULT
  423.     set current value of variable as default for input.    
  424.  
  425.     ex: set name=SMITH
  426.         XSET/DEFAULT/PROMPT "Enter your name:" name
  427.  
  428.  
  429.     /TIMEOUT  n
  430.     breaks the input if no key was hit after n seconds;  once  any  key  has
  431.     been hit, you may edit your line during any time you need. If you didn't
  432.     hit any key before n seconds, the input is cancelled and  the  resulting
  433.     DOS environment variable is set to  empty  (i.e.,  deleted)  or  to  its
  434.     previous value if the /DEFAULT flag was used. 
  435.  
  436.     - if the time-out delay has been reached, the program will set  the  DOS
  437.       environment variable XSET_MSG to TIME-OUT (to let you check for it),
  438.     - if n = 0, the program will check for type-ahead (i.e., XSET will enter
  439.       into edit mode only if a key was hit at the moment of the check),
  440.     - if n < 0, time-out will be active during the whole input  process;  if
  441.       you wait more than abs(n) seconds between two keys, the  program  will
  442.       return the string typed so far.
  443.     - this option is only active if standard input is not redirected,
  444.     - this option is also active with the KEY command (see further).
  445.  
  446.  
  447.     /LINE  n
  448.     This reads the <n>th line from the standard input device 
  449.     (instead of the first one). 
  450.     -1 will read the last line, 
  451.     -2 will read the line before, ...
  452.                                     
  453.     ex:  dir *.exe | XSET /LINE -2 /word 3 filenb
  454.          This will get the number of files matching *.exe and assign  it  to
  455.          DOS environment variable 'filenb': 
  456.          - read the line before the last one from the output of the 'dir'
  457.            command (something like '   15 file(s)      87912 bytes').
  458.          - pick up the third word on this line.
  459.                 
  460.  
  461.                                                                     Page 9
  462.  
  463.     Prompt related flags:
  464.     ────────────────────
  465.  
  466.     These are modifiers that can be used with all functions.
  467.  
  468.     /PROMPT  string
  469.     Display a message on the screen.
  470.  
  471.     /COLOR  color
  472.     Set color for prompt (and border if any).
  473.     Valid colors: BLACK, BLUE, GREEN, CYAN, RED, MAGENTA, BROWN  DARKGRAY,
  474.                   LIGHTGRAY, LIGHTBLUE, LIGHTGREEN,  LIGHTCYAN,  LIGHTRED,
  475.                   LIGHTMAGENTA,  YELLOW,  WHITE  
  476.  
  477.     Remark:  If  a  monochrome  video  card  is  detected,  the  /COLOR  and
  478.              /BACKGROUND options will be ignored; if you have a color  video
  479.              card and a monochrome display screen, the colors will be mapped
  480.              by the screen itself as with any other program.
  481.  
  482.     /BACKGROUND  color
  483.     Set background color for prompt (and window if any).
  484.     Valid colors: BLACK, BLUE, GREEN, CYAN, RED, MAGENTA, BROWN, DARKGRAY, 
  485.                   LIGHTGRAY
  486.  
  487.     /BLINK
  488.     To choose a blinking prompt (may be used with /COLOR).
  489.  
  490.     /XPOS  x
  491.     Set cursor to column x (or current - x if x < 0) before displaying prompt.
  492.  
  493.     /YPOS  y
  494.     Set cursor to line y (or current - y if y < 0) before displaying prompt.
  495.                                   
  496.     /WINDOW  left top right bottom
  497.     Draw a window (using color specified with /BACKGROUND).  
  498.     ex:  XSET/BACKGROUND RED /WINDOW 3 2 12 8
  499.          Draw a red window from position (column 3, line 2) to position  
  500.          (column 12, line 8).                       
  501.  
  502.     /BOX
  503.     Draw a window (using color specified with /BACKGROUND) around the prompt
  504.     (specified with /PROMPT); your answer (if any) will be outside the box. 
  505.     ex:  XSET/BACKGROUND RED /BOX /PROMPT "Hello, enter your name:"
  506.          Draw a red window with the prompt inside.
  507.  
  508.     /BORDER
  509.     Add a border inside a window (specified with /WINDOW or /BOX). Rem: When
  510.     using /BORDER, /BOX is assumed by default. If you wish  to  use  /BORDER
  511.     around a user-defined window, both /BORDER and /WINDOW are required. 
  512.  
  513.     ex:  XSET/BACKGROUND RED /BOX /BORDER /PROMPT "Hello, enter your name:"
  514.          XSET/BACKGROUND RED /BORDER /PROMPT "Hello, enter your name:" 
  515.          The two examples above are equivalent.
  516.          XSET/BACKGROUND RED /BORDER /WINDOW 3 2 12 8
  517.  
  518.                                                                     page 10
  519.  
  520.     String related flags:
  521.     ────────────────────
  522.  
  523.     These modifiers can be used with all functions and modify their result.
  524.  
  525.  
  526.     /UPPER - /LOWER  
  527.     This translates the result into upper/lower-cases.
  528.     Characters like éèàâÅ... are also translated to EA... (or ea...).
  529.     - This also affects the arguments given to the KEY command,
  530.     - This also affects the first argument given to the /SEARCH, /INDEX  and
  531.       /CHANGE option flags except if the /REGEXP flag is specified.
  532.  
  533.  
  534.     /LEFT n,  /RIGHT n
  535.     This picks the leftmost / rightmost <n> characters  of  the  result  (or
  536.     less if result is shorter than <n>).
  537.  
  538.     ex: XSET/LEFT 2 drive=%full_pathname%
  539.  
  540.  
  541.     /MID  m  n          
  542.     This picks the <n> characters starting from the <m>th one of the  result
  543.     (or less if result is shorter than <m> + <n>). 
  544.     First character has index 1.
  545.     
  546.     ex: XSET/MID 2 5 var=%other%
  547.         Assigns characters 2, 3, 4, 5 & 6 from %other% to 'var'.
  548.  
  549.            
  550.     /WORD  n
  551.     This picks the <n>th word (separated from other ones by  any  number  of
  552.     blanks) of the result.  
  553.     Other separators may be specified with the /SEPARATOR flag. 
  554.     If no word is found, an empty string is returned.
  555.  
  556.  
  557.     /SEPARATOR  string       
  558.     This uses the characters from 'string' as word separator. 
  559.     This option is intended to be used with /WORD and /COUNT.
  560.  
  561.     ex: XSET/SEPARATOR "+-*/()" /WORD 3 var="25+6*(-72+3)"
  562.         Assigns the string 72 to 'var' (25 is first word, 6 is second, ...).
  563.  
  564.  
  565.     /LENGTH
  566.     This returns the length of the result.
  567.  
  568.  
  569.     /COUNT
  570.     This returns the number of words  (separated  from  other  ones  by  any
  571.     number of blanks) in the result. 
  572.     Other words separators may be specified with the /SEPARATOR flag.
  573.  
  574.                                                                     Page 11
  575.     
  576.     /SEARCH  string       
  577.     This returns the portion of the result matching <string>.
  578.     See also /REGEXP.
  579.  
  580.     ex: XSET/PROMPT "Enter your name: "/UPPER/SEARCH "SMITH" var
  581.         If the answer contains 'SMITH' (even in lower-cases), variable 'var'
  582.         will be assigned to 'SMITH'; otherwise, variable 'var' will be 
  583.         empty.
  584.         
  585.         XSET/REGEXP/SEARCH "[0-9]+" var=%answer%
  586.         Variable 'var' will be assigned to the first occurrence of a  string
  587.         containing only digits (like 2056) from the variable 'answer'.
  588.                                 
  589.     /INDEX  string
  590.     This returns the  index  (position)  of  the  portion  of  the  result
  591.     matching <string>. 
  592.     First character has index 1. 
  593.     See also /REGEXP.
  594.  
  595.  
  596.     /CHANGE  string1  string2    
  597.     This changes (substitutes) all occurrences of <string1> by <string2>  in
  598.     the result.
  599.     
  600.     ex: XSET/CHANGE "oldstr" "newstring" var=%answer%
  601.  
  602.  
  603.  
  604.     Other flags:
  605.     ───────────
  606.  
  607.     /APPEND
  608.     This adds the result to the existing variable instead of overwriting it.
  609.     This allows you to bypass the 128 characters limit of DOS (see /VIEW)
  610.  
  611.     ex:  XSET/APPEND path=";c:\msc600\bin;c:\msc600\binb"
  612.  
  613.  
  614.     /MATH
  615.     This performs a mathematical calculation on the string.
  616.  
  617.     Mathematical operators: 
  618.       - on integer and floating point values:     + - * / () ^ (exponent)
  619.       - on integer values:                        % (modulo) 
  620.  
  621.     Logical operators:      = < > <= >= <>
  622.                             return 1 if true, 0 if false
  623.                             Rem: '*' may be used to 'and' values, 
  624.                                  '+' to 'or' them.
  625.  
  626.     Precedence:   + and - have the highest precedence,
  627.                   all other expressions are evaluated from left to right.
  628.            
  629.     ex: XSET /MATH var = "3+(2*5) + %new% + (%loop% <= 5)"
  630.         XSET /MATH /PROMPT "Enter your calculation" result
  631.  
  632.  
  633.                                                                     Page 12
  634.  
  635.     /REGEXP
  636.     This performs UNIX-like regular expression matching with  the  arguments
  637.     given to the /SEARCH, /INDEX and /CHANGE option flags.
  638.  
  639.     A UNIX-like regular expression is one or more occurrences of one or more
  640.     characters.
  641.  
  642.     The following symbols have a special meaning:
  643.  
  644.        ^  start of line (see also below: 'inside set of characters')
  645.        $  end of line
  646.        .  any character             
  647.        \  quote next character (i.e., do not treat it as a special character)
  648.        *  match zero or more time preceding character (or character set)
  649.        +  match one  or more time preceding character (or character set)
  650.        ?  match one  or zero time preceding character (or character set)
  651.        [] set of characters 
  652.  
  653.        inside set of characters: ^  means non-inclusion
  654.                                  -  means range
  655.       
  656.        ex: [aeiou0-9]   match a, e, i, o, u, and 0 through 9
  657.            [^ae0-9]     match anything but a, e and 0 through 9
  658.            ^a           match any line beginning by 'a'
  659.            v$           match any line ending    by 'v'
  660.  
  661.     ex: XSET /REGEXP /SEARCH "[a-zA-Z]:[a-zA-Z0-9_\\.]+" myvar
  662.         will search for a standard DOS filename (from standard input)
  663.         [a-zA-Z]         match any characters included in the range 
  664.                          'a' to 'z' and 'A' to 'Z'. 
  665.         :                match the character ':'
  666.         [a-zA-Z0-9_\\.]  match any characters included in the range  
  667.                          'a' to 'z', 'A' to 'Z', '0' to '9' and the 
  668.                          characters '_', '\' and '.'.
  669.         \\               match the character following the first '\',
  670.                          is this case a second '\'.
  671.         +                match one or several characters (the preceding  
  672.                          one, which is here a set of characters).  
  673.         This instruction matches any filename of the form 'drive:pathname'
  674.         (ex: C:\DIR\OTHERDIR\FILE.EXT).
  675.  
  676.  
  677.     /ALL     This modifies all DOS environments in memory;  i.e.,  not  only  
  678.              the  current  shell  (COMMAND.COM)  environment  but  also  the
  679.              previous ones (if any). ex: XSET /ALL /APPEND path=";c:\bin"
  680.  
  681.     Warning:  If one of the environments is not big enough  to  contain  the
  682.               new variable, no error message is displayed.
  683.  
  684.  
  685.  
  686.                                                                     page 13
  687.  
  688.     Order of execution of /options:
  689.     ──────────────────────────────
  690.      
  691.     /PROMPT + related (/COLOR, /BACKGROUND, /BLINK, /XPOS, /YPOS,
  692.                        /WINDOW, /BORDER, /BOX)
  693.     input (/DEFAULT, /TIMEOUT, /LINE)
  694.     /UPPER, /LOWER
  695.     /WORD
  696.     /LEFT 
  697.     /RIGHT
  698.     /MID    
  699.     /REGEXP   
  700.     /SEARCH
  701.     /INDEX 
  702.     /CHANGE
  703.     /LENGTH
  704.     /COUNT
  705.     /MATH
  706.     /APPEND
  707.     /ALL
  708.     /VIEW
  709.    
  710.                                                                     page 14
  711.  
  712.     Input commands:
  713.     ──────────────
  714.  
  715.     KEY  [string]
  716.                                                  
  717.     This waits  for  a  key  pressed  and  assign  the  result  to  the  DOS
  718.     environment variable. If a string argument is added to the command, only
  719.     the characters appearing in the string are allowed; if  another  key  is
  720.     hit, you will hear a beep. Printable characters (ASCII code from  32  to
  721.     255) return the character corresponding to the key (ex: A returns  'A').
  722.     Non-printable characters (ASCII code lower than 32) return their decimal
  723.     ASCII code preceded by a '#' (ex: Ctrl-A returns  '#1').  Extended  keys
  724.     (arrows, function keys, Home/end,  PageUp/PageDown,  ...)  return  their
  725.     decimal scan code added to  256  preceded  by  a  '#'  (ex:  F1  returns
  726.     '#315'). See your technical documentation for a list  of  your  keyboard
  727.     scan codes. If you used the /TIMEOUT flag, the program will return after
  728.     the specified time if no valid key was hit. The resulting variable  will
  729.     be empty.
  730.  
  731.       ex:  XSET k KEY 123aAbB       only keys '123aAbB' are allowed
  732.       ex:  XSET k KEY               all keys are allowed
  733.       ex:  XSET/UPPER k KEY  abc    only keys 'aAbBcC' are allowed   
  734.  
  735.                       
  736.     PASSWD                    
  737.     This reads characters from keyboard without echo on screen.
  738.     It is intended to input a password or a secret information.
  739.  
  740.     
  741.                                                                     page 15
  742.  
  743.     Date & time commands:
  744.     ────────────────────          
  745.  
  746.     DATE                      
  747.     This returns the system date in the format 'dd-mm-yy' (ex: 31-12-93).
  748.  
  749.  
  750.     YYMMDD              
  751.     This returns the system's date in the format 'yymmdd' (ex: 931231).
  752.     This format is very useful to generate filenames from the current date.
  753.     
  754.  
  755.     DAY 
  756.     This returns the system's day of the month (1-31)
  757.  
  758.  
  759.     MONTH                     
  760.     This returns the system's month number (1-12)
  761.                                   
  762.  
  763.     YEAR                      
  764.     This returns the system's system year (4 digits - ex: 1993)
  765.                 
  766.  
  767.     DAYOFWEEK                 
  768.     This returns the system's day in the week (0 = sunday, 1 = monday, ... )
  769.        
  770.  
  771.     TIME                      
  772.     This returns the system's time in 24h format 'hh:mm:ss' (ex: 22:15:06)
  773.       
  774.  
  775.     HOUR 
  776.     This returns the system's hour (0-24).
  777.       
  778.  
  779.     MINUTE 
  780.     This returns the system's minutes (0-59).
  781.      
  782.  
  783.     SECOND  
  784.     This returns the system's seconds (0-59).
  785.   
  786.  
  787.     DIFFDATE  date1  date2 
  788.     This returns the number of days between <date1> and <date2>. <date1> and
  789.     <date2> may be of both format from 'dd-mm-yy' or 'yymmdd' (you may  even
  790.     mix them). If <date2> is before <date1>, the result will be negative.
  791.  
  792.  
  793.                                                                     page 16
  794.  
  795.     Disk & file commands:
  796.     ────────────────────
  797.                       
  798.     Remarks: - The filenames given as arguments to these commands may be any
  799.                valid or invalid filenames. They may be an absolute  pathname
  800.                or a relative one. They will never be checked for  existence,
  801.                only their name will be resolved  (canonized)  following  the
  802.                normal DOS conventions.
  803.                   
  804.              - The drive given as arguments to  these  commands  must  be  a
  805.                letter from 'a' to 'z' (or 'A' to Z')  optionally followed by 
  806.                a period ':'.
  807.  
  808.  
  809.     FPATH {file} This returns the full pathname of a filename.
  810.  
  811.     ex: XSET myvar FPATH ..\myprog.exe
  812.         will put in myvar something like 'C:\PROGRAMS\MYPROG.EXE'
  813.  
  814.  
  815.     FDRIVE  {file}       
  816.     This returns the drive of a filename.
  817.  
  818.     ex: XSET myvar FDRIVE myprog.exe
  819.         will put in myvar 'C:'
  820.  
  821.  
  822.     FDIR  {file}
  823.     This returns the drive & directory of a filename.
  824.  
  825.     ex: XSET myvar FDIR c:myprog.exe
  826.         will put in myvar 'C:\PROGRAMS\EXE\'
  827.  
  828.  
  829.     FEXT  {file}       
  830.     This returns the extension of a file name (no period included).
  831.  
  832.     ex: XSET myvar FEXT c:\exe\myprog.exe
  833.         will put in myvar 'EXE'
  834.  
  835.  
  836.     FNAME  {file}       
  837.     This returns the name of a file without extension.
  838.  
  839.     ex: XSET myvar FNAME c:\exe\myprog.exe
  840.         will put in myvar 'MYPROG'
  841.  
  842.  
  843.     FXNAME  {file}       
  844.     This returns the name & extension of a file.
  845.  
  846.     ex: XSET myvar FXNAME h:myprog.exe
  847.         will put in myvar 'MYPROG.EXE'
  848.  
  849.  
  850.                                                                     page 17
  851.  
  852.     TRUENAME  {file}                             
  853.     This returns the full truename of a file, solving all SUBST, ASSIGN  and
  854.     JOIN commands and some network names (for those networks compatible with
  855.     MS_LAN redirector).
  856.  
  857.     ex: XSET myvar TRUENAME myprog.exe
  858.         will put in myvar something like 'C:\PROGRAMS\EXE\MYPROG.EXE'
  859.  
  860.         XSET myvar TRUENAME h:myprog.dat (where h: is SUBSTed to C:\DATA)
  861.         will put in myvar something like 'C:\DATA\MYPROG.DAT'
  862.  
  863.         XSET myvar TRUENAME h:myprog.dat (where h: is a network drive)
  864.         will put in myvar something like '\\SERVER1\SMITH%SMITH\MYPROG.DAT'
  865.  
  866.  
  867.     FSIZE  {file}       
  868.     This returns the size of a file (in bytes).
  869.  
  870.  
  871.     FDATE  {file}       
  872.     This returns the modification date of a file (dd-mm-yy).
  873.  
  874.  
  875.     FTIME  {file}       
  876.     This returns the modification time of a file (hh:mm:ss).
  877.  
  878.  
  879.     DIR  [drive]      
  880.     This returns the current directory of the specified drive. If  no  drive
  881.     is specified, the current one is assumed.
  882.  
  883.  
  884.     VOLLABEL  [drive]      
  885.     This returns the volume label of the specified drive.  If  no  drive  is
  886.     specified, the current one is assumed.
  887.  
  888.  
  889.     BYTEFREE  [drive]      
  890.     This returns the number of bytes free on  the  specified  drive.  If  no
  891.     drive is specified, the current one is assumed.
  892.  
  893.  
  894.                                                                     page 18
  895.  
  896.     DENSITY  [drive]      
  897.     This returns the drive density (in KBytes - 360, 720, 1200, 1440,  2880)
  898.     of the specified floppy drive. If no drive is specified, the current one
  899.     is assumed. This command returns the density of the drive,  not  of  the
  900.     floppy that currently is in it (there is even no need that a  floppy  be
  901.     present in the drive). The program returns  '0'  if  the  drive  has  an
  902.     unknown density or it is not a floppy drive.
  903.  
  904.  
  905.     DRIVETEST  [drive]                                
  906.     This returns  the  status  of  the  specified  drive.  If  no  drive  is
  907.     specified, the current one is assumed. The result is a concatenation  of
  908.     one  or  more  string(s)  from  'READABLE',   'WRITEABLE',   'NOFORMAT',
  909.     'NOTINSERTED', 'INVALID', 'REMOVABLE', 'REMOTE', 'SUBST', 'RAM separated
  910.     by '-'.
  911.  
  912.     ex: XSET test DRIVETEST a:
  913.         This assigns to the variable 'test' a string like:
  914.              'READABLE - WRITEABLE  - REMOVABLE'   (floppy not protected)
  915.           or 'READABLE - REMOVABLE'                (floppy protected)
  916.           or 'NOTINSERTED - REMOVABLE'             (floppy not inserted)
  917.           or 'NOFORMAT - REMOVABLE'                (floppy not formatted)
  918.  
  919.         So, to test if you have write-access to a drive:
  920.         XSET/SEARCH "WRITEABLE" test DRIVETEST a:
  921.         Variable 'test' will contain 'WRITEABLE' or will be empty.
  922.         
  923.  
  924.                                                                     page 19
  925.  
  926.     Other commands:
  927.     ──────────────
  928.     MIN      ┌{str1...strn}
  929.     MAX      └{num1...numn}
  930.  
  931.     This returns the minimum/maximum value of numbers or  strings  list.  If
  932.     not all arguments are numbers, a string comparison (i.e.,  a  comparison
  933.     of ASCII codes of their characters) will be performed. 
  934.  
  935.     Rem: A string may not contain <space> or <tab>.
  936.  
  937.     ex: XSET var MIN 3.6 -4 9.02 %num%    'var'  will  contains  '-4'  
  938.                                           (providing than %num% >= -4)
  939.         XSET var MAX 3.6 $5 abc 3.9j      'var' will contains '$5'
  940.           
  941.  
  942.     CPU                    
  943.  
  944.     This returns the processor type: 86, 186, 286, 386 or 486. The value  86
  945.     is returned for both the 8086 and 8088 (standard XT) processor. There is
  946.     no difference between DX and SX processors. Any non supported  processor
  947.     compatible with a 486 should be reported as 486.
  948.  
  949.  
  950.     RANDOM  n1  n2
  951.  
  952.     This function  returns  a  random  integer  number  between  n1  and  n2
  953.     (included). This may be  useful  to  choose  a  random  message  from  a
  954.     collection, ...
  955.  
  956.  
  957.     ERRORLEVEL
  958.  
  959.     This returns the errorlevel code of the last command issued.
  960.     This function is only valid for 
  961.       - MS-DOS COMMAND.COM 3.20, 3.21, 3.30, 4.0, 4.01, 5.0, 6.0,
  962.       - NDOS 6.0,
  963.       - 4DOS 4.02
  964.     If version is not supported, this returns -1
  965.  
  966.  
  967.     VARCOPY variable
  968.  
  969.     This is strictly equivalent to 'set  dosvar=%variable%'  but  allows  to
  970.     copy variables longer than 128 characters.
  971.                                         
  972.     ex: XSET var2 VARCOPY var1
  973.  
  974.                                                                     page 20
  975.  
  976.     Special flags:
  977.     ─────────────
  978.  
  979.     Note:  The correct syntax  for  XSET  always  needs  a  DOS  environment
  980.            variable name except for the flags described below. There is  one
  981.            other exception; in order to  allow  you  to  use  the  prompting
  982.            facilities  of  XSET  without  actually  using  the   environment
  983.            assignment you may use 
  984.  
  985.                 XSET [/options] /PROMPT "..."
  986.            instead of assigning a dummy variable like
  987.                 XSET [/options] /PROMPT "..." dummy=
  988.            In this case, XSET is only used as an enhanced display program.
  989.  
  990.  
  991.     XSET /CLEAR   deletes all variables from the current DOS environment.
  992.  
  993.  
  994.     XSET /VIEW    shows all variables from the current DOS environment.
  995.                   This  is  strictly  equivalent  to  'SET'  but  will  show
  996.                   variables longer than 128 characters.
  997.  
  998.     Rem:  If you use XSET to assign values longer than 128 characters  to  a
  999.           variable, they will appear truncated when  displayed  by  the  DOS
  1000.           command 'SET'. This is only  a  display  problem  of  the  command
  1001.           'SET'; all the variables are correctly  stored  and  can  be  used
  1002.           without problems by any program.
  1003.  
  1004.     XSET /VIEW var   displays the value of variable 'var'.
  1005.                      This is intended  to  be  used  to  pass  a  variable's
  1006.                      content to the standard input of another program.  This
  1007.                      is equivalent to 'ECHO %var%|..." except  that  it  can
  1008.                      handle variables longer than 128 characters and you can
  1009.                      use option flags with it.
  1010.  
  1011.     ex: XSET/LEFT 7 /VIEW myvar | LABEL a:   feed the program  'LABEL'  with
  1012.                                              the first 7 characters of 
  1013.                                              environment 'myvar'.
  1014.  
  1015.         XSET /VIEW > SAVEFILE.VAR            save all environment  variables
  1016.                                              into the file SAVEFILE.VAR.
  1017.  
  1018.  
  1019.     XSET /LOAD    loads variables from standard input.
  1020.                   Variables must have been saved with command 'XSET /VIEW'.
  1021.  
  1022.     ex: XSET /LOAD < SAVEFILE.VAR            load  all environment variables 
  1023.                                              from the file SAVEFILE.VAR.
  1024.  
  1025.  
  1026.     XSET /SIZE   displays environment size and free size (in bytes).
  1027.  
  1028.  
  1029.                                                                     page 21
  1030.  
  1031.      XSET variable:
  1032.      ═════════════   
  1033.      
  1034.      Because you sometimes want to use the same flags for a  group  of  XSET
  1035.      commands (like /UPPER, /DEFAULT, ...), it would be nice to have  a  way
  1036.      to give default options to XSET. And there is such a functionality: the
  1037.      XSET environment variable.
  1038.  
  1039.      Before scanning the command line, the XSET program will  look  for  the
  1040.      'XSET' variable into the current DOS environment.  If  it  exists,  the
  1041.      XSET program will use the variable contents like option flags you would
  1042.      have given onto the command line. After that, it will  use  the  option
  1043.      flags given onto the command line. Note that the command  line  options
  1044.      may overwrite those contained in the 'XSET' variable.
  1045.  
  1046.      ex:      set XSET=/UPPER/DEFAULT/XPOS 5 /BLINK
  1047.               XSET /YPOS 12 /PROMPT "First name: " name1
  1048.               XSET /PROMPT "Last name: " name2
  1049.  
  1050.      This is also a way to reduce the length of your command line  (remember
  1051.      that COMMAND.COM truncates all lines longer than 128 characters).  Note
  1052.      that you may use XSET/APPEND to assign a very long line to  the  'XSET'
  1053.      variable.
  1054.  
  1055.                           
  1056.  
  1057.      XSET_MSG variable:
  1058.      ═════════════════
  1059.      
  1060.      This variable is intended to be assigned by the XSET program itself  to
  1061.      a message to specify special events (like a time-out  on  input,  ...).
  1062.      This variable is updated (or deleted from the  environment)  each  time
  1063.      the program is called. See the related options and commands  to  get  a
  1064.      description of the variable contents.
  1065.  
  1066.      - options and commands using the XSET_MSG variable:
  1067.        /TIMEOUT
  1068.  
  1069.  
  1070.                                                                     page 22
  1071.  
  1072.      Installation:
  1073.      ════════════
  1074.  
  1075.         - XSET.EXE is ready to use; no installation. Just copy XSET.EXE  and
  1076.           XSET.DOC in a directory of your hard drive  (usually  a  directory
  1077.           included in your path). If you want to use the  demo  included  in
  1078.           this package (DEMO.BAT), it must be copied in the  same  directory
  1079.           as the XSET program. Remember this is a SHAREWARE version intended
  1080.           to be used for evaluation.
  1081.  
  1082.         - To get a registered version of XSET, print the XSET.REG file, fill
  1083.           it in and send it to indicated address; you will then receive  the
  1084.           password required  to  register  your  version  with  the  program
  1085.           REGISTER included in the package. 
  1086.           All further upgrades will be free !!!
  1087.                    
  1088.               
  1089.  
  1090.  
  1091.      Problems:
  1092.      ════════
  1093.  
  1094.         - If the size of your environment space is  not  large  enough,  you
  1095.           will receive an error message
  1096.  
  1097.              'XSET : not enough environment space.'
  1098.  
  1099.           This is not a bug, it is because the  environment  space  reserved
  1100.           for the variables is too small. You must increase it by  modifying
  1101.           the line 'SHELL=...' in your CONFIG.SYS. By default, DOS  reserves
  1102.           256 bytes environment space; this is generally  insufficient.  Try
  1103.           640 bytes (or more if you need it) by adding '/e:640' at the  line
  1104.           'SHELL=...'
  1105.  
  1106.           ex:    SHELL=COMMAND.COM /E:640 /P
  1107.  
  1108.  
  1109.           If this problem is encountered in a secondary shell (i.e., you run
  1110.           the batch file from a menu that runs a secondary shell) here is  a
  1111.           way to work around the problem (this is a DOS problem  that  could
  1112.           be avoided by the program that runs the secondary shell):
  1113.  
  1114.           put in your AUTOEXEC.BAT a line such as:
  1115.      SET TO_DELETE=something_very_long_to_be_sure_this_takes_a_lot_of_space
  1116.  
  1117.           and, before using variables in the secondary shell delete this
  1118.                                              ---------
  1119.           variable with the command:
  1120.      SET TO_DELETE=
  1121.  
  1122.  
  1123.           An  other  way  to  work  around  this  limitation  is  to   patch
  1124.           COMMAND.COM; see file 'PATCH.DOS' for more explanation.
  1125.  
  1126.  
  1127.                                                                     page 23
  1128.  
  1129.         - If you use special characters like <>| you  will  have  a  problem
  1130.           because COMMAND.COM interprets these characters  like  redirection
  1131.           commands before giving the control to the program you  call.  This
  1132.           is a general DOS problem, but it is very easy to work around.
  1133.  
  1134.           ex:  XSET /MATH var=(%loop% + 3) > 2   (suppose loop=1)
  1135.                Although you think you call XSET to check  if  4  is  greater
  1136.                than 2, COMMAND.COM interprets it as
  1137.                "put into a file named 2 the result of 'XSET /MATH var (1+3)'"
  1138.  
  1139.           You will have the same result with '<' and '|'.
  1140.           The best way to ensure that all special characters you use will be
  1141.           given 'as is' to the program you call (XSET or another one) is  to
  1142.           enclose your strings between double quotes:
  1143.  
  1144.           XSET /MATH var="(%loop% + 3) > 2"
  1145.  
  1146.           Be careful not to quote XSET reserved words  (commands  or  flags)
  1147.           and variable names.
  1148.           So do not write
  1149.                  XSET var "MIN abc <def> gh"
  1150.             or   XSET "var MIN abc <def> gh"
  1151.             but  XSET var MIN "abc <def> gh"
  1152.  
  1153.  
  1154.  
  1155.         - If you want to use the character '%' in  a  batch  file,  remember
  1156.           that this character is reserved for DOS environment variable;  so,
  1157.           if you want to use a 'real' % character, you have to write '%%' in
  1158.           your batch file.
  1159.  
  1160.           ex: XSET /MATH var="%other_var% %% 7"
  1161.               This line in a batch file will put  into  variable  'var'  the
  1162.               result of '(contents of variable other_var) modulo 7'.
  1163.  
  1164.           Notice that the use of double quotes doesn't affect the  way  that
  1165.           COMMAND.COM interprets the % character;  you  must  double  the  %
  1166.           character even if it is quoted.
  1167.  
  1168.  
  1169.  
  1170.                                                                     page 24
  1171.  
  1172.      Batch file programming: Hints & tips
  1173.      ════════════════════════════════════
  1174.  
  1175.      1. Whenever it is possible, use 'SET var=...' instead of 'XSET var=...'
  1176.         because SET is an internal COMMAND.COM's command and is quicker than
  1177.         calling an external program.
  1178.  
  1179.         ex:  To clear a variable, use    SET myvar=
  1180.                            instead of   XSET myvar=
  1181.                                       
  1182.              If you are sure  that  the  variable  'var1'  is  shorter  than
  1183.              ± 100 characters,    use    SET var2=%var1%
  1184.                            instead of   XSET var2 VARCOPY var1
  1185.  
  1186.                                      
  1187.      2. COMMAND.COM reads and execute batch files one line at a  time;  that
  1188.         means that it reads one line, execute it and rereads the  file  from
  1189.         the beginning to the next line. If you do not have a good disk-cache
  1190.         installed, it is not efficient. Furthermore,  when  using  'REM'  in
  1191.         your batch files to insert a remark, COMMAND.COM reads  the  comment
  1192.         line, execute it (i.e., does nothing) and rereads the file from  the
  1193.         beginning to the next line. To avoid this, there  is  a  trick:  use
  1194.         '::' instead of 'REM'. ':' is understood as a label to  be  used  by
  1195.         the 'GOTO' statement (see your DOS documentation);  this  line  will
  1196.         never be executed. As a label cannot begin with  a  ':',  this  line
  1197.         will not be considered as an executable line, nor as a label.
  1198.         
  1199.         ex:  replace      REM  This batch file is intended to ...
  1200.              by           ::   This batch file is intended to ...
  1201.                          
  1202.  
  1203.      3. To echo an empty line on the screen, use 'ECHO:'
  1204.                           
  1205.  
  1206.      4. To test for the existence of a directory, test for the existence  of
  1207.         the file 'nul' in it.
  1208.  
  1209.         ex:  if exist c:\mydir\nul echo The directory 'MYDIR' exists.
  1210.                           
  1211.  
  1212.      5. If an environment variable contains a directory name ending  with  a
  1213.         '\', COMMAND.COM will not accept to chdir to this directory.
  1214.  
  1215.         ex:  set dir=c:\mydir\
  1216.              cd %mydir%         ==>  Error message:  Invalid directory
  1217.  
  1218.         The trick (to avoid removing the trailing '\') is to add a '.'
  1219.         ex:  cd %mydir%.        (note the trailing '.')
  1220.               
  1221.  
  1222.      See also DEMO.BAT in this package for other tricks.
  1223.                                                                        
  1224.                                                                     page 25
  1225.  
  1226.      Additional information:
  1227.      ══════════════════════ 
  1228.                 
  1229.      Feel free to contact me for any problem or question.  If  you  have  an
  1230.      electronic mail connection, this is the quickest, cheapest and  easiest
  1231.      way (this would allow me to test your batch files in case  of  problems
  1232.      or bug).
  1233.  
  1234.  
  1235.    Marc Stern 
  1236.    Av. de la Basilique 376 bte 19
  1237.    1080 Bruxelles   
  1238.    Belgium
  1239.       
  1240.    Tel:  +32-2 525.63.32 ( 9h - 16h Central European Time )
  1241.          +32-2 427.98.52 ( after 18h Central European Time )
  1242.  
  1243.    E-mail:  stern@mble.philips.be           (internet)
  1244.             >INTERNET:stern@mble.philips.be (compuserve)
  1245.             see appendix for other networks
  1246.  
  1247.  
  1248.  
  1249.  
  1250.  
  1251.      APPENDIX:  E-mail address from other sites
  1252.      ════════
  1253.  
  1254.      Rem:  This list is obviously not complete and is  given  here  only  as
  1255.            brute information. It also may contain obsolete  information,  so
  1256.            do not be surprised if  gateway  described  here-below  does  not
  1257.            exist anymore when you try to contact me. If you are connected to
  1258.            another network or  cannot  reach  Internet  with  the  following
  1259.            procedure, ask your network manager.
  1260.  
  1261.  
  1262.  
  1263.   internet   :    stern@mble.philips.be
  1264.  
  1265.   aol        :    stern@mble.philips.be
  1266.   applelink  :    stern@mble.philips.be@internet#
  1267.   att        :    internet!mble.philips.be!stern
  1268.   bitnet     :    stern@mble.philips.be
  1269.   calvacom   :    EM/stern@mble.philips.be
  1270.   compuserve :    >INTERNET:stern@mble.philips.be
  1271.  
  1272.   connect    :    DASN (first line = "stern@mble.philips.be"@DASN)
  1273.  
  1274.   easynet    :    stern@mble.philips.be                (from Ultrix)
  1275.   easynet    :    stern%mble.philips.be@decwrl.dec.com (from Ultrix via IP)
  1276.   easynet    :    DECWRL::"stern@mble.philips.be"      (from Ultrix via Decnet)
  1277.   easynet    :    nm%DECWRL::"stern@mble.philips.be"   (from VMS - NMAIL)
  1278.   easynet    :    stern@mble.philips.be @Internet      (from VMS - All-in-1)
  1279.  
  1280.   envoy      :    [RFC-822="stern(a)mble.philips.be"]INTERNET/TELEMAIL/US
  1281.                                                            
  1282.  
  1283.                                                                     page 26
  1284.  
  1285.   fidonet    :    stern@mble.philips.be ON 1:1/31
  1286.                   or send to UUCP gateway with
  1287.                   first line = "To: stern@mble.philips.be"
  1288.  
  1289.   genie      :    stern@mble.philips.be@INET#
  1290.  
  1291.   geonet     :    DASN (subject line = "stern@mble.philips.be!subject")
  1292.  
  1293.   gold       :    /DD.RFC-822=stern(a)mble.philips.be/O=uknet/PRMD=uk.ac/ADMD=gold 400/C=GB/
  1294.   
  1295.   gsfcmail   :    (SITE:SMTPMAIL,ID:<stern(a)mble.philips.be>)
  1296.                or (C:USA,A:TELEMAIL,P:SMTPMAIL,ID:<stern(a)mble.philips.be>)
  1297.                or POSTMAN (first line = "To: stern@mble.philips.be")
  1298.  
  1299.   keylink    :    (C:au, A:telememo, P:oz.au, "RFC-822":
  1300.   (continuing...) "Marc Stern <stern(a)mble.philips.be>")
  1301.  
  1302.   mausnet    :    stern@mble.philips.be
  1303.  
  1304.   mci        :    To:  Marc Stern (EMS)
  1305.                   EMS: INTERNET
  1306.                   Mbx: stern@mble.philips.be
  1307.  
  1308.   nasamail   :    (site:smtpmail,id:<stern(a)mble.philips.be>)
  1309.  
  1310.   nsi        :    east::"stern@mble.philips.be"
  1311.                or dftnic::"stern@mble.philips.be"
  1312.                or nssdca::in%"stern@mble.philips.be"
  1313.                or jpllsi::"stern@mble.philips.be"
  1314.  
  1315.   omnet      :    type 'compose manual' at the command prompt,
  1316.                   choose 'Internet address' option from the menu,
  1317.                   type 'stern@mble.philips.be'
  1318.  
  1319.   sinet      :    M_MAILNOW::M_INTERNET::"stern@mble.philips.be"
  1320.                or M_MAILNOW::M_INTERNET::mble.philips.be::stern
  1321.  
  1322.   span       :    AMES::"stern@mble.philips.be
  1323.                or HAMLET::"stern@mble.philips.be
  1324.                or IO::"stern@mble.philips.be
  1325.                or IUE::"stern@mble.philips.be
  1326.                or JPLLSI::"stern@mble.philips.be
  1327.                or NSFGW::"stern@mble.philips.be
  1328.                or NSSDCA::"stern@mble.philips.be
  1329.                or STAR::"stern@mble.philips.be
  1330.  
  1331.   sprintmail :    (C:USA,A:TELEMAIL,P:INTERNET,"RFC-822":
  1332.   (continuing...)   <stern(a)mble.philips.be>) DEL
  1333.  
  1334.   thenet     :    UTADNX::WINS%" stern@mble.philips.be "
  1335.  
  1336.   telemail   :    [INTERMAIL/USCISI]TELEMAIL/USA
  1337.                   with first line = Forward: ARPA
  1338.                   and second line = To: stern@mble.philips.be
  1339.  
  1340.   wwivnet    :    stern#mble.philips.be@506
  1341.