home *** CD-ROM | disk | FTP | other *** search
/ World of A1200 / World_Of_A1200.iso / programs / system / askenv / dearc.rexx < prev    next >
OS/2 REXX Batch file  |  1995-02-27  |  3KB  |  109 lines

  1. /* Entpacken von Files unter AskEnv >V2.1 ; Bengt Giger 16.9.92 */
  2.  
  3. /* Aufruf:  Dearc <fileName>                */
  4. /*                            */
  5. /* ohne Filename wird Askenv-Requester aufgerufen    */
  6. /*                            */
  7. /* ENV:-Variablen: Dearc_dir, Dearc_name        */
  8. /*                            */
  9. /* erkannte Formate: LHA/LZH                            */
  10. /*                   ZOO                                */
  11. /*                   ZIP                                */
  12. /*                   ARC                                */
  13. /*                   DMS                                */
  14. /*                             */
  15. /* Variablen zum Anpassen:                */
  16.  
  17. askenvCmd = 'AskEnv'
  18. lzLhaCmd  = 'LZ x'
  19. zooCmd    = 'booz x'
  20. zipCmd    = 'unzip'     /* Achtung: Option 'x' kommt nach dem File, ev ändern in Zeile 67 */
  21. arcCmd    = 'arc x'
  22.  
  23.  
  24. /* trace results */
  25.  
  26. /* OPTIONS RESULTS */
  27. LF='0A'X
  28. HOST = ADDRESS()
  29.  
  30. curNum = 0
  31.  
  32. PARSE UPPER ARG Commandline
  33.  
  34. ADDRESS command            /* Variablen initialisieren        */
  35. toDevice = GetEnv('Dearc_dir')
  36. IF toDevice = '' THEN DO    /* erster Start                */
  37.  toDevice = 'RAM:'
  38.  'SetEnv Dearc_dir 'toDevice
  39. END
  40. arcName = GetEnv(Dearc_name)
  41. IF arcName  = '' THEN DO
  42.  arcName = 'T:'
  43.  'SetEnv Dearc_name ""'
  44. END
  45.  
  46. start:
  47. DO FOREVER
  48.  fileNum = PRAGMA(Id)||curNum   /* eindeutiger Bezeichner fuer File    */
  49.  IF Commandline = "" THEN DO    /* kein Name übergeben --> Interface     */
  50.   fileName = AskName()        /* dort ist die Abbruch-Option!     */
  51.   END
  52.  ELSE DO            /* Name einfach übernehmen        */
  53.   fileName = Commandline
  54.  END
  55.  ext = UPPER(fileName)
  56.  DO FOREVER
  57.   extension = ext
  58.   PARSE VAR ext first "." ext   /* Name koennte auch einen Punkt haben, */
  59.   IF ext = '' THEN LEAVE    /* darum so kompliziert            */
  60.  END
  61.  CALL OPEN StartFile, 'PIPE:DeArc'||fileNum , 'W'
  62.  CALL WriteLn StartFile, 'CD "'||toDevice||'"'
  63.  CALL WriteLn StartFile, 'CHANGETASKPRI -1'
  64.  SELECT
  65.   WHEN extension = 'LHA' | extension = 'LZH' THEN CALL WriteLn StartFile, lzLhaCmd' "'||fileName||'"'
  66.   WHEN extension = 'ZOO' THEN CALL WriteLn StartFile, zooCmd' 'fileName
  67.   WHEN extension = 'ZIP' THEN CALL WriteLn StartFile, unzipCmd' '||LEFT(fileName, LENGTH(fileName)-4)||' x'
  68.   WHEN extension = 'ARC' THEN CALL WriteLn StartFile, arcCmd' '||fileName
  69.   WHEN extension = 'DMS' THEN CALL WriteLn StartFile, 'DMS write '||fileName||' TO df0:'
  70.   OTHERWISE DO
  71.    askenvCmd' SReq "Sorry, Archiv nicht erkannt" NEG Aufhören'
  72.    EXIT
  73.   END
  74.  END
  75.  CALL WriteLn StartFile, 'IF WARN'
  76.  CALL WriteLn StartFile, ' QUIT'
  77.  CALL WriteLn StartFile, 'ENDIF'
  78.  CALL WriteLn StartFile, 'ENDCLI'
  79.  CALL CLOSE StartFile        /* Befehl bereit, Shell starten        */
  80.  'run <NIL: >NIL: newshell "CON:60/10/640/190/Entpacke..." from PIPE:DeArc'||fileNum
  81.  IF Commandline ~= "" THEN CALL Exit
  82.  curNum = curNum + 1
  83. END                /* Nur ein Durchlauf beim Start mit Argument */
  84.  
  85. AskName:
  86. ADDRESS command askenvCmd' GADFILE Dearc.req'
  87. IF rc = 5 THEN CALL Exit
  88. arcName = GetEnv(Dearc_name)
  89. toDevice = GetEnv(Dearc_dir)
  90. RETURN arcName
  91.  
  92. Exit:
  93. /* 'Unsetenv Dearc_dir' */
  94. /* 'Unsetenv Dearc_name' */
  95. Exit
  96.  
  97. /* GetEnv      : liest Umgebungsvariable des ENV: Verzeichnisses     */
  98. /*     Eingabe : Name der Variable                    */
  99. /*     Ausgabe : in Variable gespeicherter Wert, bzw Leerstring     */
  100.  
  101. GetEnv:     PROCEDURE
  102. arg name
  103.  IF Open(infile, 'env:'name, r) THEN DO
  104.   text = ReadLn(infile)
  105.   CALL Close infile
  106.   RETURN text
  107.  END
  108.  RETURN ''
  109.