home *** CD-ROM | disk | FTP | other *** search
/ PC-Test Pro / PCTESTPRO.iso / filetool / initme / entp / inityme.hlp < prev    next >
Encoding:
Text File  |  1996-01-18  |  21.3 KB  |  850 lines

  1. Computer Tyme IniTyme * Copyright 1993-96 by Marc Perkel
  2. All Rights Reserved * Version 2.52 * Release Date: 01-18-96
  3.  
  4. Computer Tyme * 411 North Sherman, Suite 300 * Springfield Mo. 65802
  5. (417) 866-1222 Voice * (800) 548-5353 Sales * (417) 866-1665 Fax/BBS
  6.  
  7. IniTyme is a Windows *.INI file manipulator. It is designed to assist the
  8. network administrator who has to maintain INI files for many users.
  9.  
  10. USAGE: INITYME ChangeFile IniFile [/Q]
  11.        or MARXMENU INITYME ChangeFile IniFile
  12.  
  13. Note: If you are running IniTyme from MarxMenu rather that INITYME.EXE,
  14. then all references to running INITYME are really MARXMENU INITYME.
  15.  
  16. The /Q switch puts IniTyme in Quiet mode. No messages to the screen are
  17. displayed.
  18.  
  19. Example:
  20.   INITYME CHANGE.INI SYSTEM.INI
  21.  
  22. In the above example CHANGE.INI is the control file that will control the
  23. changes that will be written to the target file SYSTEM.INI. You can also
  24. invoke IniTyme by passing only one parameter. If you pass only one
  25. parameter, then the extension DEF or CTL are assumed for the name of the
  26. change file.
  27.  
  28. Example:
  29.   INITYME SYSTEM.INI
  30.   (SYSTEM.DEF or SYSTEM.CTL are assumed)
  31.  
  32. The ChangeFile is formatted like an INI file. A sample changefile might
  33. look like this:
  34.  
  35.     ; CHANGE.INI : A sample changefile for the IniTyme Program.
  36.  
  37.     subst 'C:\WINDOWS\PM4\' 'W:\PM4'
  38.  
  39.     [boot]
  40.     del sound.drv     ;deletes a line
  41.  
  42.     del [keyboard]    ;deletes a section
  43.  
  44.     [386Enh]
  45.     Paging=1
  46.     Device=mydev.386
  47.     foo=bar
  48.     ADD TestMode=3
  49.     CHANGE mydevice=mydriver.386
  50.  
  51.     [fonts]
  52.     subst 'V:\' 'P:\WINDOWS\'
  53.  
  54. Any line that starts with the semicolon is a comment and will not be
  55. processed.
  56.  
  57. Adding and updating lines is done by listing the new lines as you wish them
  58. to appear. In the example there is a line in the [386ENH] group that reads
  59. PAGING=1. If the target INI files does not contain a [386ENH] group it will
  60. be created. The default mode is - change it if it's there, add it if
  61. it's not.
  62.  
  63. If that group does not contain a PAGING=1 line it will be added to the
  64. group. If a line in the [386ENH] group already exists that sets PAGING=2 it
  65. will be changed to PAGING=1. The word DEVICE= is a special case if it is
  66. found in the [386Enh] section and it is automatically added unless the whole
  67. line matches something that's already there.
  68.  
  69.  
  70. ADD
  71. ---
  72.  
  73. Using the word ADD in front of the line causes the line to be added if it
  74. isn't already there, but not changed if it is already there. (Add but
  75. don't change.)
  76.  
  77.  
  78. CHANGE
  79. ------
  80.  
  81. Using the word CHANGE in front of the line causes the line to be changed if
  82. it is there, but not added if it isn't there. (Change but don't add.)
  83.  
  84.  
  85. DEL
  86. ---
  87.  
  88. Using the word DEL in front of the line causes a matching line to be deleted
  89. from the INI file. The DEL command can also be used to remove entire groups
  90. as illustrated in the example line DEL [KEYBOARD].
  91.  
  92.  
  93. ADDITEM
  94. -------
  95.  
  96. When using commands like Run=Prog1 Prog2 Prog3 you might want to add more
  97. items to the list. If you change file contains: "AddItem Run=Prog4 Prog5"
  98. then the result will be "Run=Prog1 Prog2 Prog3 Prog4 Prog5"
  99.  
  100.  
  101. DELITEM
  102. -------
  103.  
  104. Similar to AddItem, DelItem removes items form a list. If your INI file
  105. contains "Run=Prog1 Prog2 Prog3 Prog4" and your change INI file contains
  106. "DelItem Run=Prog2 Prog4" then the result will be: "Run=Prog1 Prog3"
  107.  
  108.  
  109. WRITE / WRITELN
  110. ---------------
  111.  
  112. Write writes a message to the screen. It can be used as a tool for
  113. debugging change files. Writeln writes the line with a carriage return
  114. and linefeed. Write does not.
  115.  
  116.  Example:
  117.     Writeln 'Made it Here!'
  118.     Writeln 5 + 3 ' ' ReadEnv 'temp'
  119.  
  120.  
  121. ADDVALUE
  122. --------
  123. If a line is found, AddValue will add (or subtract for negative values)
  124. the amount of the line in the change file.
  125.  
  126.  Example:
  127.     Original file has: NumValue=9
  128.     Change file has: AddValue NumValue=3
  129.     Result file will have: NumValue=12
  130.  
  131.  
  132. AFTER
  133. -----
  134.  
  135. If you use the command AFTER <line> then the next item that is added or
  136. changed will be put after the line you specified. If the line you
  137. specified isn't found then it is added to the end of the section. The
  138. after command can also be used to move a line from one place to another
  139. within the same section.
  140.  
  141.  Example:
  142.     After Run
  143.     Foo=Bar
  144.  
  145.  
  146. BEFORE
  147. ------
  148. Before is just like after except it adds the line before the specified
  149. line.
  150.  
  151.  
  152. FIRST
  153. -----
  154.  
  155. If you use the word first, then the next item added will be first in the
  156. section.
  157.  
  158.  
  159. SUBST
  160. -----
  161.  
  162. The SUBST command is used to replace strings within an INI file. It can be
  163. used in two fashions either globally throughout the file or locally within
  164. a group. In the above example it is used both ways.
  165.  
  166. Putting the line SUBST 'C:\WINDOWS\PM4\' 'W:\PM4' before the first group
  167. header will cause the path string 'C:\WINDOWS\PM4\' to be globally replaced
  168. throughout the file with 'W:\PM4'. In the last line of the above example the
  169. SUBST 'V:\' 'P:\WINDOWS\' command will replace only those strings that match
  170. in the group [fonts].
  171.  
  172. The SUBST command also supports references to environment variables.
  173. Thus F:\HOME\%USER%\WINDOWS becomes F:\HOME\MARC\WINDOWS.
  174.  
  175. INITYME also has special provisions for handling the [GROUPS] section on the
  176. PROGMAN.INI. This section numbers the groups that are referenced. INITYME
  177. will scan the groups listed and determine the first available group number
  178. when it is adding to the [GROUPS] group.
  179.  
  180. To illustrate, if the PROGMAN.INI files group section reads as follows:
  181.  
  182.     [Groups]
  183.     Group1=H:\WINDOWS\MAIN.GRP
  184.     Group2=H:\WINDOWS\ACCESSOR.GRP
  185.     Group4=H:\WINDOWS\STARTUP.GRP
  186.     Group5=H:\WINDOWS\BP7.GRP
  187.     Group6=H:\WINDOWS\ALDUS.GRP
  188.     Group7=F:\HOME\MARC\WINDOWS\WORDFORW.GRP
  189.     Group8=F:\HOME\MARC\WINDOWS\MICROSOF.GRP
  190.     Group3=F:\HOME\MARC\WINDOWS\EDOS.GRP
  191.  
  192.  
  193. and your ChangeFile contains:
  194.  
  195.     [Groups]
  196.     DEL group=BP7.GRP
  197.     Group=MAIN.GRP
  198.     Group=MYGROUP.GRP
  199.     DEL group=EDOS.GRP
  200.     Group=Z:\SYSTEM\TEST.GRP
  201.     Group=MASTER.GRP
  202.  
  203. After executing IniTyme your PROGMAN.INI group section would now read:
  204.  
  205.     [Groups]
  206.     Group1=MAIN.GRP
  207.     Group2=H:\WINDOWS\ACCESSOR.GRP
  208.     Group4=H:\WINDOWS\STARTUP.GRP
  209.     Group6=H:\WINDOWS\ALDUS.GRP
  210.     Group7=F:\HOME\MARC\WINDOWS\WORDFORW.GRP
  211.     Group8=F:\HOME\MARC\WINDOWS\MICROSOF.GRP
  212.     Group5=MYGROUP.GRP
  213.     Group3=Z:\SYSTEM\TEST.GRP
  214.     Group9=MASTER.GRP
  215.  
  216. If new groups are added, the Order= line in the [Settings] section is
  217. updated.
  218.  
  219.  
  220. DUPLICATES
  221. ----------
  222. Most key words in INI files are unique, with the notable exception of
  223. the Device= keyword in the [386enh] section. IniTyme allows you to
  224. specify other keywords that are allowed to be duplicated. Duplicates are
  225. specified at the top of the file before any sections are defined.
  226.  
  227.  Example:
  228.     Duplicates Device=[386enh]   ;default
  229.     Duplicates Dups=[Section]
  230.  
  231. You can also specify duplicates for all sections by specifying the
  232. section name [*].
  233.  
  234.  Example:
  235.     Duplicates Dups=[*]
  236.  
  237.  
  238. CLEANNOEQUALS
  239. -------------
  240. The CleanNoEquals command tells IniTyme to remove lines that do not
  241. cantain an = sign. This is used to automatically clean up damaged INI
  242. files.
  243.  
  244.  
  245. CLEANEMPTYSECTIONS
  246. ------------------
  247. The CleanEmptySections command is used to remove sections that contain
  248. no lines.
  249.  
  250.  
  251. CONDITIONALS
  252. ------------
  253.  
  254. IniTyme supports conditional changes. If the condition is met then the
  255. changes are made. If statements can be nested.
  256.  
  257.  if [condition]
  258.     Device=mydev.386
  259.     add foo=bar
  260.  else
  261.     Device=otherdev.386
  262.     change foo=notbar
  263.  endif
  264.  
  265.  
  266. CONDITIONAL LIBRARY
  267. -------------------
  268.  
  269. And
  270. Returns the logical And of two values.
  271.  
  272.  Example:
  273.    if InGroup 'EveryOne' and InGroup 'Accounting'
  274.  
  275.  
  276. Or
  277. Returns the logical Or of two values.
  278.  
  279.  Example:
  280.    if InGroup 'EveryOne' or InGroup 'Accounting'
  281.  
  282.  
  283. Xor
  284. Returns the logical Xor of two values.
  285.  
  286.  Example:
  287.    if InGroup 'EveryOne' Xor InGroup 'Accounting'
  288.  
  289.  
  290. Not
  291. Returns the logical Not of a value.
  292.  
  293.  Example:
  294.    if Not InGroup 'EveryOne'
  295.  
  296.  
  297. +
  298. Adds two values.
  299.  
  300.  Example:
  301.    if 'A' + 'B' = 'AB'
  302.  
  303.  
  304. -
  305. Subtracts two values.
  306.  
  307.  Example:
  308.    if 5 - 3 < 4
  309.  
  310.  
  311. =
  312. Compares two values and returns true if they are equal.
  313.  
  314.  Example:
  315.     if 2 + 2 = 4
  316.  
  317.  
  318. <>
  319. Compares two values and returns true if they are not equal.
  320.  
  321.  Example:
  322.     if 2 + 2 <> 5
  323.  
  324.  
  325. >
  326. Compares two values and returns true if the first value is greater than the
  327. second value.
  328.  
  329.  Example:
  330.     if 'D' > 'C'
  331.  
  332.  
  333. <
  334. Compares two values and returns true if the first value is less than the
  335. second value.
  336.  
  337.  Example:
  338.     if 'C' < 'D'
  339.  
  340.  
  341. >=
  342. Compares two values and returns true if the first value is greater than or
  343. equal to the second value.
  344.  
  345.  Example:
  346.     if 'D' >= 'C'
  347.  
  348.  
  349. <=
  350. Compares two values and returns true if the first value is less than or
  351. equal to the second value.
  352.  
  353.  Example:
  354.     if 'C' <= 'D'
  355.  
  356.  
  357. ( )
  358. Parens begin and end logical grouping for interpretation.
  359.  
  360.  Example:
  361.     if ('A' < 'B') and (9 > (5 + 3))
  362.  
  363.  
  364. True
  365. Returns the logical value True
  366.  
  367.  Example:
  368.     if True
  369.  
  370.  
  371. False
  372. Returns the logical value False
  373.  
  374.  Example:
  375.     if not False
  376.  
  377.  
  378. ReadEnv (Environment String)
  379. Returns the value of an environment variable.
  380.  
  381.  Example:
  382.    if ReadEnv 'ENHANCED' = 'Y'
  383.  
  384.  
  385. ValueOf
  386. Return the value of an element in the current section.
  387.  
  388.  Example:
  389.     if ValueOf 'PagingDrive' <> 'H'
  390.        PagingDrive=C
  391.     endif
  392.  
  393.  
  394. Value (String)
  395. Return the numeric value of a string.
  396.  
  397.  Example:
  398.     if Value(ValueOf CachedFileHandles) < 12
  399.        CachedFileHandles=20
  400.     endif
  401.  
  402.  
  403. UpperCase
  404. Returns the UpperCase of a string.
  405.  
  406.  Example:
  407.     if UpperCase ReadEnv 'ENHANCED' = 'Y'
  408.  
  409.  
  410. CPU
  411. Returns the class of CPU chip you are running.
  412.  
  413.  Example:
  414.     if CPU >= 3
  415.  
  416.  
  417. MathChip
  418. Returns true if you have a math coprocessor.
  419.  
  420.  Example:
  421.     if MathChip
  422.  
  423.  
  424. Display
  425. Returns the type of video card. Types returned are HERC, CGA, EGA, VGA.
  426.  
  427.  Example:
  428.     if Display = 'VGA'
  429.  
  430.  
  431.  
  432. InGroup (Group)
  433. Returns True if user is in the Novell group.
  434.  
  435.  Example:
  436.    if InGroup 'EveryOne'
  437.  
  438. If you are not running on Novell, you can set an environment variable
  439. and list the groups there.
  440.  
  441. Set Groups=Everyone,Accounting,Sales
  442.  
  443.  
  444. InMem (TSR)
  445. Returns True if the TSR is in memory. It can also detect the names of
  446. pending batch files that are running.
  447.  
  448.  Example:
  449.    if InMem 'IPXODI'
  450.    if InMem 'AUTOEXEC'
  451.  
  452.  
  453. ExistFile (Name)
  454. Returns True if the file exists.
  455.  
  456.  Example:
  457.    if ExistFile 'C:\WINDOWS\SOL.EXE'
  458.  
  459.  
  460. ExistDir (Name)
  461. Returns True if the directory exists.
  462.  
  463.  Example:
  464.    if ExistDir 'C:\WINDOWS'
  465.  
  466.  
  467. ShellLoaded
  468. Returns True if the Novell VLM or NetX shell is loaded.
  469.  
  470.  Example:
  471.    if ShellLoaded
  472.  
  473.  
  474. VlmLoaded
  475. Returns True if the Novell VLM shell is loaded.
  476.  
  477.  Example:
  478.    if VlmLoaded
  479.  
  480.  
  481. Station
  482. Returns the workstation address on a Novell network or the value set in
  483. the environment variable STATION=.
  484.  
  485.  Example:
  486.     if Station = '250:33333'
  487.  
  488.  
  489. UserName
  490. Returns the Novell login name of the user, or the value set in the
  491. environment variable USER=.
  492.  
  493.  Example:
  494.     if UserName = 'Marc'
  495.  
  496.  
  497. DayOfWeek
  498. Returns the first three letters of the day of the week.
  499.  
  500.  Example:
  501.     if DayOfWeek = 'TUE'
  502.  
  503.  
  504. Month
  505. Returns the first three letters of the Month.
  506.  
  507.  Example:
  508.     if Month = 'AUG'
  509.  
  510.  
  511. INIMAN COMPATIBILITY
  512. --------------------
  513. In order to make IniTyme more compatible with the popular IniMan program
  514. from Saber Software, (which is now McAfee) I've added several new
  515. conditionals and some syntax enhancements. Because of differences in the
  516. design of these two programs, IniTyme is not 100% compatible with
  517. IniMan's DEF files. But, these additions are a step in that direction,
  518. and makes the transition significantly easier.
  519.  
  520. IniTyme will search for DEF files in the current directory and the
  521. directory pointed to by the S_CONFIG environment variable.
  522.  
  523. Unlike IniTyme, IniMan uses ";*" as a keyword for it's conditionals.
  524. IniTyme supports ;* for compatibility, but when given the choice,
  525. IniTyme's more powerful IF should be used. The ;* works like the word
  526. IF, but it uses the rules of IniMan instead. IniMan's ;* and IniTyme's
  527. IF statements can be freely mixed. IF statements can be nested.
  528.  
  529. IniMan conditionals can be easilly converted to IniTyme conditionals as
  530. follows:
  531.  
  532. IniMan:
  533.  
  534.   ;*Groups=Everyone
  535.   Line1=1
  536.  
  537. IniTyme:
  538.  
  539.   if Groups=Everyone
  540.      Line1=1
  541.   endif
  542.  
  543. IniMan:
  544.  
  545.   ;*Groups=Everyone
  546.   ;*begin
  547.   Line1=1
  548.   Line2=2
  549.   ;*end
  550.  
  551. IniTyme:
  552.  
  553.   if Groups=Everyone
  554.      Line1=1
  555.      Line2=2
  556.   endif
  557.  
  558.  
  559. One difference between IniMan and IniTyme is if the conditional is not
  560. true, IniMan will delete the line. Inityme will do nothing to the line
  561. unless you specify it specifically in an else statement. Since IniTyme
  562. has the DEL command, you get more specific control over what you can do.
  563. If you want a line to be deleted if the condition is not met, you would
  564. do as follows:
  565.  
  566.   if Groups=Everyone
  567.      Line1=1
  568.   else
  569.      Del Line1=
  570.   endif
  571.  
  572.  
  573. Another difference between IniMan and IniTyme is that IniMan will not
  574. change a line if it already exists. IniTyme will change the line. If you
  575. want a command to behave like IniMan, do this:
  576.  
  577.   Add Line1=1
  578.  
  579. The word ADD tells IniTyme to add the line if it doesn't exist, but not
  580. to change it if it does.
  581.  
  582.  
  583. IniMan conditionals don't require quotes around strings, so quotes can
  584. be used optionally.
  585.  
  586. If multiple conditions are specified without the use of AND, OR, or XOR;
  587. then AND is assumed.
  588.  
  589.  Example:
  590.     ;*Groups=Accounting,Sales Users=!Marc
  591.  
  592. In the above example, the condition is True only if both conditions are
  593. met. If you want it to be True if either condition is met, then you will
  594. do the following:
  595.  
  596.  Example:
  597.     ;*Groups=Accounting,Sales or Users=Marc,Grace
  598.  
  599.  
  600. IniTyme also supports the IniMan Not symbol "!". If "!" is placed in
  601. front of a member of the list, it means "and not this". The following
  602. example means if the user is in groups Accounting or Sales and the user
  603. isn't Marc.
  604.  
  605.  Example:
  606.     if Groups=Accounting,Sales  Users=!Marc
  607.  
  608. Unlike IniMan, the not symbol can be mixed freely.
  609.  
  610.  Example:
  611.     if Groups=Accounting,!Sales
  612.  
  613.  
  614. IniMan conditionals can be freely mixed with IniTyme conditionals.
  615. Inityme supports using IF instead of ;*. The following two statements
  616. are the same:
  617.  
  618.     ;*Groups=Accounting,Payroll and (DayOfWeek = 'FRI')
  619.     if Groups=Accounting,Payroll and (DayOfWeek = 'FRI')
  620.  
  621. IniTyme does not support IniMan REV statements because they are not
  622. necessary in IniTyme. IniMan required REV statements in order to change
  623. lines in the INI file to a new value. IniTyme does this by default.
  624.  
  625. IniMan
  626.   ;*Rev=Always
  627.   Shell=SMENU.EXE
  628.  
  629. IniTyme
  630.   Shell=SMENU.EXE
  631.  
  632.  
  633.  
  634. INIMAN CONDITIONALS
  635. -------------------
  636.  
  637.  
  638. Groups=Group1,Group2,Group3
  639. Returns true if the user is a member of any of the listed groups.
  640.  
  641.  Example:
  642.     if Groups=Accounting,Sales
  643.  
  644.  
  645.  
  646. Users=User1,User2,User3
  647. Returns true if the user is one of the listed users.
  648.  
  649.  Example:
  650.     if Users=Marc,Pete,Phil,Grace
  651.  
  652.  
  653. Hardware=VGA
  654. Returns true if one of the listed hardware pieces is present.
  655.  
  656.  Example:
  657.     if Hardware=VGA,EGA,Math,!8086
  658.  
  659.  
  660. Stations=Station1,Station2,Station3
  661. Returns true if the station is one of the listed stations. The
  662. comparison is based on partial string compares so that you could match a
  663. range of station numbers.
  664.  
  665.  Example:
  666.     if Stations=0c3456,345,0a4b337
  667.  
  668.  
  669. Network=
  670. Returns true if user is on the specified network.
  671.  
  672.  Example:
  673.     if NetWork=Novell
  674.  
  675.  
  676. File=File1,File2,File3
  677. Returns true if any listed files exists.
  678.  
  679.  Example:
  680.     if File=c:\net.cfg,c:\shell.cfg
  681.  
  682.  
  683. Dir=Dir1,Dir2,Dir3
  684. Returns true if any listed directories exists.
  685.  
  686.  Example:
  687.     if dir=c:\windows,w:\windows
  688.  
  689.  
  690. BACKUPS
  691. -------
  692.  
  693. Whenever INITYME runs it creates a backup of the original file with a *.BNI
  694. extension. If you decide you don't like the changes you've made you can
  695. execute a one generation restore with the command:
  696.  
  697.      INITYME RESTORE SYSTEM.INI
  698.  
  699. This will delete the current SYSTEM.INI file and rename the SYSTEM.BNI file
  700. to SYSTEM.INI. If a matching BNI file is not present then the restore
  701. command does not do anything.
  702.  
  703. If by chance you are in a situation where murphy has tried to make your day
  704. really bad and you've screwed up your INI files royally, be sure to remember
  705. the SALVAGE command from netware. But nothing, not even salvage, is an
  706. acceptable substitute for a current set of backups. One suggestion might be
  707. to use PKZIP to ZIP up a set of your pre-modified INI files. This gives you
  708. the opportunity to play without risk. Nothing beats backups!
  709.  
  710.  
  711. BACKUP NAME
  712. -----------
  713.  
  714. By default, the backup extension for INI files is BNI. Hoewever, if you
  715. want to change this, use can use the BackupName command in the change
  716. file as follows:
  717.  
  718.  Example:
  719.    BackupName 'MYBAK.TXT'
  720.  
  721. If you want to change only the extension of the backups, then start the
  722. BackupName with '*.' as follows:
  723.  
  724.  Example:
  725.    BackupName '*.XXX'
  726.  
  727.  
  728. NOBACKUP
  729. --------
  730.  
  731. The NoBackup command is used if you don't want to create the BNI backup
  732. file. This will save disk space, however, you lose the safety of having
  733. the ability to undo what you just did. The BNI file is actually created
  734. and then deleted, so if you have Novell's salvage of and UnDelete
  735. command you can get the BNI file back.
  736.  
  737.  
  738. PIPING FILENAMES
  739. ----------------
  740.  
  741. IniTyme can be used to update many INI file in bulk by creating a ListFile
  742. contains a list of INI files. Then simply provide IniTyme with the filename
  743. of the list file instead of a specific INI file. The syntax of a list file
  744. should be something like:
  745.  
  746.      \home\phil\windows\system.ini
  747.      \home\marc\windows\system.ini
  748.      ...etc...
  749.  
  750. You can also pipe a list of files to IniTyme as follows:
  751.  
  752.   WHEREIS SYSTEM.INI|INITYME CHANGE.INI
  753.  
  754. File name references in INITYME can include references to environment
  755. variables. Thus \HOME\%USER%\WINDOWS\SYSTEM.INI is a valid filename if the
  756. environment variable USER is set.
  757.  
  758.  
  759. LOGGING CHANGES
  760. ---------------
  761.  
  762. If you want to create a log file of the changes that were made to the file
  763. add the command:
  764.  
  765.   LOG [FileName]
  766.  
  767. in your CHANGE.INI file, before the first section header, and INITYME
  768. will log the changes in the FileName you specify. If the FileName isn't
  769. specified the default name is your INI file name with a LOG extension.
  770.  
  771. If you want the log to append to and existing log file, use the command:
  772.  
  773.   APPENDLOG [FileName]
  774.  
  775.  
  776. YAK MODE
  777. --------
  778. If Yak is on, all changes will be displayed on the screen. To turn Yak
  779. on, add a line with the word "Yak" before the first section.
  780.  
  781.  
  782. TEST MODE
  783. ---------
  784.  
  785. If you want to test a change file without changing the original INI file
  786. then add the word TestMode to the CHANGE.INI file before the first section
  787. header. In test mode the changes are written to the BNI file and the INI
  788. file is left untouched. You can then look at the BNI file to see the
  789. changes.
  790.  
  791.  
  792. COMPANION PROGRAMS INIDIF GRPTYME
  793. ---------------------------------
  794.  
  795. Included with INITYME is INIDIF.
  796.  
  797. INIDIF compares two INI files and produces a third file that contains the
  798. differences between the two INI files. This allows you to install a new
  799. windows program and compare the changed INI file to the original INI file.
  800. The change file can then be used with INITYME to apply the same changes to
  801. other INI files of other users on a network.
  802.  
  803.  USAGE: INIDIF NewFile OldFile ChangeFile
  804.  
  805.  Example:
  806.    INIDIF SYSTEM.INI SYSTEM.OLD SYSTEM.CHG
  807.  
  808. GrpTyme is a DOS utility to create and modify Microsoft Windows GRP
  809. files used by Program Manager. It allows network managers to add icons,
  810. remove icons, or modify icon information inside of Program Manager's
  811. group files. Network managers can also create new groups from a text
  812. file that has a format similar to a Windows INI file. On a network,
  813. GrpTyme can help automate the updating of thousands of GRP files in a
  814. single process. If you want to add a new program item to the desktop of
  815. hundreds of network Windows users, it would take a serious amount of
  816. work. GrpTyme can do in minutes what would normally take days to
  817. accomplish.
  818.  
  819. GrpTyme also has the ability to look into existing GRP files and read
  820. the information into a GNI file. This file is a text file much like an
  821. INI file, and this file can me manipulated with IniTyme and then
  822. recompiled into a GRP file. GrpTyme is sold separately.
  823.  
  824.  
  825. WILL INITYME WORK ON BATCH FILES?
  826. ---------------------------------
  827. The short answer is NO. The reason is that INI files have a structure.
  828. There are headers and lines where something equals something. Batch and
  829. other configuration files have no rules, so changing them is a
  830. completely different concept.
  831.  
  832. However, due to demand from users and the need to continue to eat, I've
  833. written another program, BatZap, which does batch and other text based
  834. configuration files. BatZap is to batch files what IniTyme is to INI
  835. files. BatZap uses a script language with over 100 powerful commands. If
  836. you like IniTyme, you'll love BatZap!
  837.  
  838.  
  839. WE WANT YOUR INPUT
  840. ------------------
  841.  
  842. If you like this program and you can think of more features that it needs,
  843. give me a call and I will probably add them.
  844.  
  845. IniTyme is licensed for $95/fileserver.
  846.  
  847. IniTyme is written in the MarxMenu network system language. IniTyme is
  848. included free with the Network Survival Kit along with source code allowing
  849. you to add your own features to the program.
  850.