home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 18 REXX / 18-REXX.zip / rxls03.cmd < prev    next >
OS/2 REXX Batch file  |  1995-01-01  |  6KB  |  76 lines

  1. /*------------------------------------------------------------------------*\
  2. |                                                                          |
  3. |         9501LS02.CMD (rxls03) - Synchronize detached DIR command         |
  4. |                                                                          |
  5. \*------------------------------------------------------------------------*/
  6. if RxFuncQuery( 'SysLoadFuncs' ) then                             /* 0006 */
  7.    do                                                             /* 0007 */
  8.       call RxFuncAdd 'SysLoadFuncs', 'REXXUTIL', 'SysLoadFuncs'   /* 0008 */
  9.       call SysLoadFuncs                                           /* 0009 */
  10.    end                                                            /* 0010 */
  11.                                                                   /* 0011 */
  12. /*-----------------------------------*\                           /* 0012 */
  13. |  Build list of drives (with colon)  |                           /* 0013 */
  14. \*-----------------------------------*/                           /* 0014 */
  15. drive_list = SysDriveMap()                                        /* 0015 */
  16.                                                                   /* 0016 */
  17. /*-------------------------------------------*\                   /* 0017 */
  18. |  Start detached DIR command for each drive  |                   /* 0018 */
  19. \*-------------------------------------------*/                   /* 0019 */
  20. do drive_number = 1 to WORDS( drive_list )                        /* 0020 */
  21.    drive_letter = LEFT( WORD( drive_list, drive_number ), 1 )     /* 0021 */
  22.                                                                   /* 0022 */
  23.    /* create output file & queue names */                         /* 0023 */
  24.    output_file = 'DIR_'   || drive_letter || '.LST'               /* 0024 */
  25.    queue_name  = 'QUEUE_' || drive_letter                         /* 0025 */
  26.                                                                   /* 0026 */
  27.    /* create & load REXX data queue */                            /* 0027 */
  28.    call RXQUEUE 'DELETE', queue_name /* be sure queue didn't exist */
  29.    call RXQUEUE 'CREATE', queue_name /* create queue */           /* 0029 */
  30.    call RXQUEUE 'SET',    queue_name /* set named queue active */ /* 0030 */
  31.    push DATE() TIME()               /* put something in queue */  /* 0031 */
  32.                                                                   /* 0032 */
  33.    /* detach dir >file & rxqueue name /clear */                   /* 0033 */
  34.    external_command = '@(@DETACH DIR '                      ||,   /* 0034 */
  35.                       drive_letter || ':\*.* /S 1>'         ||,   /* 0035 */
  36.                       output_file                           ||,   /* 0036 */
  37.                       ' 2>&1 & RXQUEUE /clear '             ||,   /* 0037 */
  38.                       queue_name                            ||,   /* 0038 */
  39.                       ') 1>nul 2>&1'                        ||,   /* 0039 */
  40.                       ''                                          /* 0040 */
  41.    interpret "'" || external_command || "'"                       /* 0041 */
  42. end                                                               /* 0042 */
  43.                                                                   /* 0043 */
  44. /*-------------------------------------------------------*\       /* 0044 */
  45. |  Process the DIR output for each drive as it completes  |       /* 0045 */
  46. \*-------------------------------------------------------*/       /* 0046 */
  47. drive_number = 0                    /* used for wrap list */      /* 0047 */
  48. do while drive_list <> ''                                         /* 0048 */
  49.    drive_number = drive_number + 1                                /* 0049 */
  50.    if drive_number > WORDS( drive_list ) then                     /* 0050 */
  51.       do                                                          /* 0051 */
  52.          drive_number = 1           /* wrap to beginning of list */
  53.       end                                                         /* 0053 */
  54.    drive_letter = LEFT( WORD( drive_list, drive_number ), 1 )     /* 0054 */
  55.                                                                   /* 0055 */
  56.    /* see if DIR command complete - queue empty */                /* 0056 */
  57.    queue_name  = 'QUEUE_' || drive_letter                         /* 0057 */
  58.    call RXQUEUE 'SET', queue_name   /* make respective queue active */
  59.    if QUEUED() = 0 then                                           /* 0059 */
  60.       do                                                          /* 0060 */
  61.          output_file = 'DIR_' || drive_letter || '.LST'           /* 0061 */
  62.          /* ... process DIR output in .LST file */                /* 0062 */
  63.          call SysFileDelete output_file                           /* 0063 */
  64.          drive_list_entry = drive_letter || ':' /* append colon */
  65.          parse value drive_list with,                             /* 0065 */
  66.             prefix (drive_list_entry) suffix                      /* 0066 */
  67.          drive_list = STRIP( prefix || ' ' || suffix )            /* 0067 */
  68.       end                                                         /* 0068 */
  69.                                                                   /* 0069 */
  70.    if drive_number = WORDS( drive_list ) then                     /* 0070 */
  71.       do                                                          /* 0071 */
  72.          call SysSleep 2            /* quiesce this session */    /* 0072 */
  73.       end                                                         /* 0073 */
  74. end                                                               /* 0074 */
  75. exit                                                              /* 0075 */
  76.