home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 11 Util / 11-Util.zip / oslite11.zip / oslite.btm (.txt) < prev    next >
4DOS Compressed Batch-To-Memory File  |  1994-09-20  |  3KB  |  190 lines

  1. @echo off
  2. on break goto doquit
  3. if NOT "%@EVAL[2+2]"=="4" goto not4dos
  4. if "%OSLITE"=="" goto novar
  5.  
  6. echo Oslite V1.1 by Enrico Demarin *FREEWARE*
  7.  
  8. set TMP1=%@UNIQUE[%OSLITE]
  9. set TMP2=%@UNIQUE[%OSLITE]
  10. set CRATIO=-1
  11. set LTPAT=%@SEARCH["lthdr.cmd"]
  12. set NOBAK=0
  13. set FULLPAT=0 
  14. set NOEAS=0
  15.  
  16. unset /Q ORG2
  17. unset /Q ORG1
  18.  
  19. if "%#"=="0" goto sum
  20. gosub scanopt
  21.  
  22.  
  23. if NOT EXIST %LTPAT goto err4
  24.  
  25. SET INFILE=%@PATH[%ORG1]%@NAME[%ORG1].exe
  26. if NOT EXIST %INFILE goto err1
  27.  
  28. if "%ORG2"=="" goto nohd3
  29. SET OUTFILE=%@PATH[%ORG2]%@NAME[%ORG2].cmd
  30. goto hdone3
  31. :nohd3
  32. SET OUTFILE=%@PATH[%INFILE]%@NAME[%INFILE].cmd
  33. :hdone3
  34.  
  35. :vai
  36. copy %INFILE %TMP1 >nul
  37. Echo Compressing %INFILE...
  38. gzip %CRATIOq %TMP1
  39. if NOT ERRORLEVEL==0 gpt erro4
  40.  
  41. echo Creating CMD file...
  42.  
  43. set FH=%@FILEOPEN[%TMP2,write]
  44. if "%FH"=="-1" goto erro3
  45. set RES=%@FILEWRITE[%FH,@echo off]
  46. if "%RES"=="-1" goto erro3
  47. set RES=%@FILEWRITE[%FH,SET FULLPAT=%FULLPAT]
  48. if "%RES"=="-1" goto erro3
  49.  
  50. if "%FULLPAT"=="0" goto nofpat
  51. set RES=%@FILEWRITE[%FH,SET ORIGNAME=%@FULL[%INFILE]]
  52. goto else
  53. :nofpat
  54. set RES=%@FILEWRITE[%FH,SET ORIGNAME=%INFILE]
  55. :else
  56. if "%RES"=="-1" goto erro3
  57.  
  58.  
  59. set FLINES=%@EVAL[5+%@LINES[%LTPAT]]
  60. set RES=%@FILEWRITE[%FH,SET LITSIZE=%FLINES]
  61. if "%RES"=="-1" goto erro3
  62. set RES=%@FILECLOSE[%FH]
  63. if "%RES"=="-1" goto erro3
  64.  
  65. copy /b %TMP2+%LTPAT+%TMP1.gz %OUTFILE >nul
  66. if NOT EXIST %OUTFILE goto erro3
  67.  
  68.  
  69. if "%NOEAS"=="1" goto doren
  70. :doeas
  71. echo Storing EAs...
  72. if NOT EXIST %TMP2 goto eacopy
  73. del %TMP2 >nul
  74. :eacopy
  75. eautil %INFILE %TMP2 /P /S
  76. if NOT EXIST %TMP2 goto doren
  77. eautil %OUTFILE %TMP2 /O /J
  78.  
  79. :doren
  80. if "%NOBAK"=="1" goto dodel
  81. copy %INFILE %@PATH[%INFILE]%@NAME[%INFILE].bak >nul
  82. if NOT ERRORLEVEL==0 goto erro2
  83.  
  84. :dodel
  85. echo Done. (EXE/CMD bytes=%@FILESIZE[%INFILE,b],%@FILESIZE[%OUTFILE,b]) 
  86. del %INFILE >nul
  87. goto doquit
  88.  
  89. :erro3
  90. Echo Error: Couldn't create CMD file !
  91. goto doquit
  92.  
  93. :erro2
  94. Echo Error: Couldn't create %INFILE.BAK !
  95. goto doquit
  96.  
  97. :erro4
  98. Echo Error: Gzip returned a bad status.
  99. if NOT EXIST %OUTFILE goto doquit
  100. del %OUTFILE >nul
  101. goto doquit
  102.  
  103. :err1
  104. echo Error: Invalid or missing source file name.
  105. goto sum
  106.  
  107. :err4
  108. echo Error: Couldn't find "lthdr.cmd" !
  109.  
  110. :sum
  111. echo Syntax    : oslite source [destination]  -0...9  [-NOBAK -FULLPAT -NOEAS]
  112. echo Purpose   : compress an exe file to a cmd file.
  113. echo Parameters:
  114. echo            source   : exe file to compress
  115. echo            destination : cmd file to create (optional)
  116. echo            -0...9    : compression ratio to use, 1 faster, 9 best
  117. echo            -NOBAK    : don't make a backup of the old .EXE file
  118. echo            -FULLPAT  : .CMD will decompress to original exe path
  119. echo                        (by default, .CMD will decompress into %OSLITE)
  120. echo            -NOEAS    : don't copy EAS to .CMD file
  121. echo Requirements:
  122. echo      Oslite can work ONLY on a HPFS drive. 4OS2 2.0 or higher must 
  123. echo      be installed. And GZIP.EXE,SKIP.EXE,LTHDR.CMD and EAUTIL must be in
  124. echo      the path.
  125.  
  126. :doquit
  127. if NOT EXIST %TMP2 goto end0
  128. del %TMP2 >nul
  129. :end0
  130. if NOT EXIST %TMP1 goto end1
  131. del %TMP1 >nul
  132. :end1
  133. if NOT EXIST %TMP1.gz goto end2
  134. del %TMP1.gz >nul
  135. :end2
  136. quit
  137.  
  138. :not4dos
  139. echo This procedure requires 4OS2 2.00 or higher.
  140. quit
  141.  
  142. :novar
  143. echo OSLITE environment not defined.
  144. quit
  145.  
  146. :scanopt
  147.  
  148.  
  149.  
  150. SET COUNT=%#
  151. DO WHILE "%COUNT" != "0"
  152. iff "%1"=="-1" then 
  153. SET CRATIO=%1
  154. elseiff "%1"=="-2" then 
  155. SET CRATIO=%1
  156. elseiff "%1"=="-3" then 
  157. SET CRATIO=%1
  158. elseiff "%1"=="-4" then 
  159. SET CRATIO=%1
  160. elseiff "%1"=="-5" then 
  161. SET CRATIO=%1
  162. elseiff "%1"=="-6" then 
  163. SET CRATIO=%1
  164. elseiff "%1"=="-7" then 
  165. SET CRATIO=%1
  166. elseiff "%1"=="-8" then 
  167. SET CRATIO=%1
  168. elseiff "%1"=="-9" then 
  169. SET CRATIO=%1
  170. elseiff "%@UPPER[%1]"=="-NOBAK" then 
  171. SET NOBAK=1
  172. elseiff "%@UPPER[%1]"=="-FULLPAT" then 
  173. SET FULLPAT=1
  174. elseiff "%@UPPER[%1]"=="-NOEAS" then 
  175. SET NOEAS=1
  176. elseiff "%@SUBSTR[%1,0,1]"=="-" then
  177. echo Invalid option : %1
  178. elseiff "%ORG1"=="" then
  179. SET ORG1=%1
  180. elseiff "%ORG2"==""    then
  181. SET ORG2=%1
  182. else
  183. echo Extra argument %1 ignored.
  184. endiff
  185.  
  186. shift 1
  187. SET COUNT=%@EVAL[%COUNT-1]
  188. ENDDO
  189. return
  190.