home *** CD-ROM | disk | FTP | other *** search
/ TopWare Tools / TOOLS.iso / tools / top1628 / maketemp.btm < prev    next >
Encoding:
Text File  |  1993-12-28  |  6.1 KB  |  197 lines

  1. @ECHO OFF
  2. REM --------------------------------------------------------------------
  3. REM Name: MAKETEMP.BTM V1.10
  4. REM
  5. REM Funktion: .BTM für 4DOS zum Erstellen eines neuen temporären 
  6. REM           Verzeichnisses und Belegen der Variable TEMP mit den
  7. REM           Namen dieses Verzeichnisses
  8. REM
  9. REM Sinn und Zweck:
  10. REM           Manch ein Programm benutzt während der Laufzeit temporäre 
  11. REM           Dateien im Verzeichnis %TEMP% mit festen Namen.
  12. REM           Daher können von solch einem Programm unter OS/2 nicht
  13. REM           zwei Kopien gleichzeitig (!) in verschiedenen DOS-Boxen
  14. REM           ausgeführt werden.
  15. REM           Um dieses Dilemma zu vermeiden, ermittelt MAKETEMP für 
  16. REM           jede neue DOS-Box ein neues exklusives Verzeichnis und
  17. REM           setzt die Variable TEMP auf dessen Namen.
  18. REM           MAKETEMP sollte daher grundsätzlich in jeder DOS-Box 
  19. REM           aufgerufen werden. Unter OS/2 geht dies elegant über die
  20. REM           AUTOEXEC.BAT-Datei der DOS-Box.
  21. REM
  22. REM Interna:  MAKETEMP ermittelt das "Root-Verzeichnis" für das
  23. REM           temporäre Verzeichnis aus der Environment-Variable
  24. REM           TEMP, d.h. die Variable muß vor dem Aufruf von MAKETEMP
  25. REM           schon gesetzt sein (z.B. mittels SET TEMP=C:\TEMP)
  26. REM           In diesen Root-Verzeichnis erstellt MAKETEMP dann 
  27. REM           jeweils das neue temporäre Verzeichnis für die DOS-Box.
  28. REM           Nicht mehr benötigte temporäre Verzeichnisse werden von
  29. REM           MAKETEMP automatisch beim ersten Aufruf von MAKETEMP
  30. REM           am nächsten Tag (oder später) gelöscht. 
  31. REM
  32. REM Last Update: 28.12.1993 
  33. REM
  34. REM Aufruf:
  35. REM     CALL maketemp.btm
  36. REM
  37. REM Ausgabe:
  38. REM     Errorlevel ==   0 okay, die Variable TEMP enthält den Namen des
  39. REM                       neuen temporären Verzeichnisses
  40. REM     Errorlevel == 255 CTRL-C gedrückt, die Variable TEMP ist unverändert
  41. REM         sonst   Fehler, die Variable TEMP ist unverändert
  42. REM
  43. REM Besonderheiten:
  44. REM    Dieses .BTM funktioniert nur, falls 4DOS.COM als Kommando-Interpreter
  45. REM    verwendet wird!!!
  46. REM    Der Aufruf "4DOS /C MAKETEMP.BTM" funktioniert nicht!!!
  47. REM    Die Variable TEMP muß den Namen eines existierenden und NICHT
  48. REM    schreib-geschützten Verzeichnisses enthalten.
  49. REM    Alle Verzeichnisse mit der Extension .#OK oder .#nn ( 00 <= nn <= 99)
  50. REM    im Verzeichnis %TEMP% dürfen nicht von Hand gelöscht werden!!!
  51. REM    (MAKETEMP löscht diese automatisch sobald sie nicht mehr benötigt
  52. REM     werden.)
  53. REM
  54. REM Verwendete 4DOS-Variablen:
  55. REM     _date
  56. REM
  57. REM Verwendete interne Variablen:
  58. REM     date  = konvertiertes Datum
  59. REM     count = interner Zähler
  60. REM     c     = temporäre Variable
  61. REM     IErr  = Errorlevel für MAKETEMP
  62. REM     nTemp = temporäre Variable
  63. REM
  64. REM Autor: Bernd Schemmer
  65. REM        Bäckerweg 48
  66. REM        60316 Frankfurt 
  67. REM        Tel.: (069) 4 97 04 84
  68. REM
  69. REM Vertrieb: MAKETEMP ist Freeware
  70. REM
  71. REM --------------------------------------------------------------------
  72.  
  73. pushd
  74. UNSET /Q _date
  75. SET IErr=1
  76.  
  77. IFF %@name[%_4ver] GE 5 THEN
  78.     REM *** erst ab 4DOS V5.0 möglich
  79.     ON BREAK GOTO UserAbort
  80. ENDIFF
  81.     
  82. REM --------------------------
  83. REM *** freien Speicher im Environment überprüfen
  84. REM
  85. IFF 0%_env LT 0100 THEN
  86.     ECHO. [MAKETEMP] --- Zuwenig freier Speicher im Environment!
  87.     GOTO EndProg
  88. ENDIFF
  89.  
  90. REM --------------------------
  91. REM *** "Root"-Verzeichnis für das neue temporäre Verzeichnis überprüfen
  92. REM
  93. IFF "%temp%" != "" THEN
  94.     IFF %@ready[%temp%] == 1 THEN
  95.         IFF isDir %temp% THEN
  96.             ECHO. [MAKETEMP] --- Das neue Verzeichnis wird im Verzeichnis %temp% erstellt.
  97.             SET IErr=0
  98.         ENDIFF
  99.     ENDIFF
  100. ENDIFF
  101.  
  102. IFF "%iErr%" != "0" THEN
  103.     ECHO. [MAKETEMP] --- Temporäres "Root"-Verzeichnis "%temp%" nicht gefunden!
  104.     GOTO EndProg
  105. ENDIFF
  106.  
  107. SET iErr=1
  108.  
  109. cdd %temp%
  110. IFF %_? != 0 .OR. %? != 0 THEN
  111.     ECHO. [MAKETEMP] --- Fehler beim Wechseln ins Verzeichnis "%temp%"!
  112.     GOTO EndProg
  113. ENDIFF
  114.  
  115. REM --------------------------
  116. REM *** Datum konvertieren
  117. REM
  118. IFF "%@substr[%_date,2,1]" == "." THEN
  119.     REM *** Datum im deutschen Format
  120.     SET date=%@substr[%_date%,6,2]%@substr[%_date%,3,2]%@substr[%_date%,0,2]
  121. ELSE
  122.     REM *** Datum im amerikanischen Format
  123.     SET date=%@substr[%_date%,6,2]%@substr[%_date%,0,2]%@substr[%_date%,3,2]
  124. ENDIFF
  125.  
  126. REM --------------------------
  127. REM *** Testen, ob die Aufräumarbeiten für heute schon erledigt wurden
  128. REM
  129.  
  130. REM *** Test-and-Set-Semaphor für Batch-Dateien
  131. REM
  132. MD %date%.#OK >&>NUL
  133. IF %_? != 0 .OR. %? != 0 GOTO PrologOk
  134. ECHO. -- Temporäres Verzeichnis für eine DOS-Box unter OS/2 -- >!%date%.#OK\$$TEMP$$
  135.  
  136. REM *** Löschen aller nicht mehr benötigten temporären Verzeichnisse
  137. REM
  138.  
  139. ECHO. [MAKETEMP] --- Lösche nicht mehr benötigte Verzeichnisse in %_cwd% ...
  140. FOR /AD %%z IN (*.#??) DO (
  141.     IFF %@name[%z] LT %date% THEN
  142.  
  143.         ECHO. *** Add the parameter /y to suppress the confirmation
  144.         IF EXIST %z%\$$TEMP$$ del /s/x/z %z
  145.  
  146.     ENDIFF
  147.                           )
  148.  
  149. REM --------------------------
  150. REM *** Namen des neuen temporären Verzeichnisses ermitteln
  151. REM
  152. :PrologOk
  153.  
  154. ECHO. [MAKETEMP] --- Ermittle den Namen für ein neues temporäres Verzeichnis ...
  155. SET count=01
  156.  
  157. :GetDirLoop
  158. REM *** Environment-Variable für das temporäre Verzeichnis setzen
  159. SET NTEMP=%_cwd%\%date%.#%count%
  160. md %ntemp% >&>NUL
  161. IF %_? == 0 .AND. %? == 0 GOTO DirOk
  162. SET count=%@eval[%count%+1]
  163. IF %count% LT 100 GOTO GetDirLoop
  164.  
  165. ECHO.
  166. ECHO. [MAKETEMP] --- Fehler: Kann kein neues temporäres Verzeichnis erstellen!
  167. GOTO EndProg
  168.  
  169. :DirOk
  170. ECHO. -- Temporäres Verzeichnis für eine DOS-Box von OS/2 -- >!%NTEMP%\$$TEMP$$
  171.  
  172. ECHO. [MAKETEMP] --- Das neue temporäre Verzeichnis ist %NTEMP%.
  173.  
  174. SET TEMP=%NTEMP%
  175. SET iErr=0
  176.  
  177. :EndProg
  178. IFF "%iErr%" != "0" THEN
  179.     UNSET /Q NTEMP
  180.     ECHO.
  181.     ECHO.    --- Bitte die Fehlermeldung mit J bestätigen ---
  182.     INKEY /K"jJ" %%c >NUL
  183. ENDIFF
  184.  
  185. :EndProg1
  186. REM *** temporäre Environment-Variablen löschen
  187. UNSET /Q date count c ntemp
  188.  
  189. popd
  190. QUIT %_iErr%
  191.  
  192. :UserAbort
  193. ECHO. [MAKETEMP] --- Programm durch CTRL-BREAK abgebrochen!
  194. SET iErr=255
  195. GOTO EndProg1
  196.  
  197.