home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 6 File / 06-File.zip / warptape.zip / RXBAKEAS.CMD < prev    next >
OS/2 REXX Batch file  |  1995-02-15  |  6KB  |  192 lines

  1. /* Store all EAs on drive */
  2.  
  3. CALL RxFuncAdd 'SysLoadFuncs', 'RexxUtil', 'SysLoadFuncs'
  4. CALL SysLoadFuncs
  5.  
  6. CALL SysCls
  7.  
  8. Backup = 0
  9. CTRPAD = 80
  10.  
  11. /*---------------------------------------------------------------/
  12. /    Check for No Arguments on command line                      /
  13. /---------------------------------------------------------------*/
  14.  
  15. if ARG(1) = '' then signal ShortHelp
  16.  
  17. /*---------------------------------------------------------------/
  18. /    If argument passed, display warning message                 /
  19. /---------------------------------------------------------------*/
  20.  
  21. if ARG(1) \= '' then
  22.  
  23. /*---------------------------------------------------------------/
  24. /    Warning message to user before overwriting EA files         /
  25. /---------------------------------------------------------------*/
  26.      CALL SysCls
  27.      SAY " "
  28.      SAY " "
  29.      SAY " "
  30.      SAY " "
  31.      SAY CENTER('WARNING!!!', CTRPAD)
  32.      SAY " "
  33.      SAY CENTER('All EA backups will be overwritten', CTRPAD)
  34.      SAY " "
  35.      SAY CENTER('Press ''N'' to Cancel Backup', CTRPAD)
  36.      SAY " "
  37.      SAY CENTER('Any other key to Continue', CTRPAD)
  38.  
  39. /*---------------------------------------------------------------/
  40. /    Allow user to cancel in answer to warning message           /
  41. /---------------------------------------------------------------*/
  42.  
  43. key = SysGetKey(NOECHO)
  44. PARSE UPPER VAR key key
  45.      if key = 'N' then do
  46.      CALL SysCls
  47.      EXIT
  48.      end
  49.  
  50. /*---------------------------------------------------------------/
  51. /    Translate possible Drive letter entries                     /
  52. /---------------------------------------------------------------*/
  53.  
  54. DRV = ARG(1)   /* assign argument a variable for parsing */
  55.  
  56. PARSE UPPER VAR DRV DRV  /* change variable entry to uppercase */
  57.  
  58. Select
  59.      when DRV = 'C' then
  60.           Drive = 'C:\'
  61.      when DRV = 'D' then
  62.           Drive = 'D:\'
  63.      when DRV = 'E' then
  64.           Drive = 'E:\'          
  65.      when DRV = 'F' then
  66.           Drive = 'F:\'
  67.      when DRV = 'G' then
  68.           Drive = 'G:\'
  69.      when DRV = 'H' then
  70.           Drive = 'H:\'
  71.      when DRV = 'I' then
  72.           Drive = 'I:\'
  73.      otherwise signal ShortHelp
  74.      end
  75.  
  76. /*---------------------------------------------------------------/
  77. /    Notify User of acceptance                                   /
  78. /---------------------------------------------------------------*/
  79.  
  80. SAY ' '
  81. SAY CENTER(Processing..., CTRPAD)
  82. SAY ' '
  83.  
  84. /*---------------------------------------------------------------/
  85. /    If /EAS dir doesn't exist, create it                        /
  86. /---------------------------------------------------------------*/
  87.  
  88. CALL SysFileTree'eas','junk','D'
  89. IF RC <> 0 then
  90.      do
  91.           CALL SysMkDir Drive||'eas'
  92.           SAY " "
  93.           SAY CENTER('Creating 'Drive||EAS, CTRPAD)
  94.           SAY ' '
  95.           SAY CENTER(DONE, CTRPAD)
  96.           SAY ' '
  97.           SAY CENTER('Reading Files from Directories...', CTRPAD)
  98.      end
  99.  
  100. /*---------------------------------------------------------------/
  101. /    Load the drive's file tree structure into an array          /
  102. /---------------------------------------------------------------*/
  103.  
  104. CALL SysFileTree Drive||'*.*', 'FileTree', 'FOS'
  105. SAY ' '
  106. SAY CENTER(done, CTRPAD)
  107. SAY ' '
  108. SAY CENTER('Opening temp file...', CTRPAD)
  109.  
  110. /*---------------------------------------------------------------/
  111. /    Create necessary dirs, files, etc...                        /
  112. /---------------------------------------------------------------*/
  113.  
  114. OutDir = Drive||'EAS\'
  115. CurDir = DIRECTORY()
  116. NewDir = DIRECTORY(OutDir)
  117.  
  118. SAY ' '
  119. SAY CENTER(done,CTRPAD)
  120.  
  121. /*---------------------------------------------------------------/
  122. /    Delete files inaccessible to EAUTIL                         /
  123. /---------------------------------------------------------------*/
  124.  
  125. SAY ' '
  126. SAY CENTER('Deleting . SF files from list...', CTRPAD)
  127.  
  128. Filelist.0 = Filetree.0
  129.  
  130. do i = 1 to FileTree.0
  131.           RC = COMPARE(FileTree.i, Drive||'WP ROOT. SF')
  132.                if RC = 0 then iterate
  133.           RC = COMPARE(FileTree.i, Drive||'EA DATA. SF')
  134.                if RC = 0 then iterate
  135.           FileList.i = FileTree.i
  136. end
  137.  
  138. DROP FileTree
  139.  
  140. SAY ' '
  141. SAY CENTER(done, CTRPAD)
  142.  
  143. SAY ' '
  144. SAY CENTER('Creating backup Ea files...', CTRPAD)
  145.  
  146. Eafiles. = ''
  147.  
  148. do i = 1 to FileList.0
  149.      SlashPos = LASTPOS('\', FileList.i)
  150.      WorkDir = DELSTR(FileList.i, 1, (SlashPos))
  151.      FileOut = INSERT(OutDir, WorkDir)
  152.      EAUTIL FileList.i FileOut "/P /S /R"
  153.      CALL SysFileTree FileOut, 'Eafiles', 'FO'
  154.      if Eafiles.1 = '' then iterate
  155.      else CALL LINEOUT Drive||'EAS\EADIR.LST', FileList.i
  156.      Eafiles.1 = ''
  157. end
  158.  
  159. CALL STREAM EADIR.LST, C, CLOSE
  160.  
  161. DROP FileList
  162.  
  163. CALL SysCls
  164. SAY ' '
  165. SAY ' '
  166. SAY ' '
  167. SAY ' '
  168. SAY ' '
  169. SAY CENTER('Read 'Drive||'EAS\EADIR.LST to view stored EA files', CTRPAD)
  170. SAY ' '
  171.  
  172. EXIT
  173. /*---------------------------------------------------------------/
  174. /    Short version of help for no arguments on command line      /
  175. /---------------------------------------------------------------*/
  176.  
  177. ShortHelp:
  178.      do
  179.           CALL SysCls
  180.           SAY " "
  181.           SAY " "
  182.           SAY " "
  183.           SAY ' '
  184.           SAY CENTER('Example Usage:  RXBAKEAS C', CTRPAD)
  185.           SAY " "
  186.           SAY ' '
  187.           SAY CENTER('Drives beyond I not supported', CTRPAD)
  188.           SAY ' '
  189.           SAY CENTER('(View README.1ST file for help, clues, etc.)', CTRPAD)
  190.           EXIT
  191.      END
  192.