home *** CD-ROM | disk | FTP | other *** search
- @ECHO OFF
- REM --------------------------------------------------------------------
- REM Name: MAKETEMP.BTM V1.10
- REM
- REM Funktion: .BTM für 4DOS zum Erstellen eines neuen temporären
- REM Verzeichnisses und Belegen der Variable TEMP mit den
- REM Namen dieses Verzeichnisses
- REM
- REM Sinn und Zweck:
- REM Manch ein Programm benutzt während der Laufzeit temporäre
- REM Dateien im Verzeichnis %TEMP% mit festen Namen.
- REM Daher können von solch einem Programm unter OS/2 nicht
- REM zwei Kopien gleichzeitig (!) in verschiedenen DOS-Boxen
- REM ausgeführt werden.
- REM Um dieses Dilemma zu vermeiden, ermittelt MAKETEMP für
- REM jede neue DOS-Box ein neues exklusives Verzeichnis und
- REM setzt die Variable TEMP auf dessen Namen.
- REM MAKETEMP sollte daher grundsätzlich in jeder DOS-Box
- REM aufgerufen werden. Unter OS/2 geht dies elegant über die
- REM AUTOEXEC.BAT-Datei der DOS-Box.
- REM
- REM Interna: MAKETEMP ermittelt das "Root-Verzeichnis" für das
- REM temporäre Verzeichnis aus der Environment-Variable
- REM TEMP, d.h. die Variable muß vor dem Aufruf von MAKETEMP
- REM schon gesetzt sein (z.B. mittels SET TEMP=C:\TEMP)
- REM In diesen Root-Verzeichnis erstellt MAKETEMP dann
- REM jeweils das neue temporäre Verzeichnis für die DOS-Box.
- REM Nicht mehr benötigte temporäre Verzeichnisse werden von
- REM MAKETEMP automatisch beim ersten Aufruf von MAKETEMP
- REM am nächsten Tag (oder später) gelöscht.
- REM
- REM Last Update: 28.12.1993
- REM
- REM Aufruf:
- REM CALL maketemp.btm
- REM
- REM Ausgabe:
- REM Errorlevel == 0 okay, die Variable TEMP enthält den Namen des
- REM neuen temporären Verzeichnisses
- REM Errorlevel == 255 CTRL-C gedrückt, die Variable TEMP ist unverändert
- REM sonst Fehler, die Variable TEMP ist unverändert
- REM
- REM Besonderheiten:
- REM Dieses .BTM funktioniert nur, falls 4DOS.COM als Kommando-Interpreter
- REM verwendet wird!!!
- REM Der Aufruf "4DOS /C MAKETEMP.BTM" funktioniert nicht!!!
- REM Die Variable TEMP muß den Namen eines existierenden und NICHT
- REM schreib-geschützten Verzeichnisses enthalten.
- REM Alle Verzeichnisse mit der Extension .#OK oder .#nn ( 00 <= nn <= 99)
- REM im Verzeichnis %TEMP% dürfen nicht von Hand gelöscht werden!!!
- REM (MAKETEMP löscht diese automatisch sobald sie nicht mehr benötigt
- REM werden.)
- REM
- REM Verwendete 4DOS-Variablen:
- REM _date
- REM
- REM Verwendete interne Variablen:
- REM date = konvertiertes Datum
- REM count = interner Zähler
- REM c = temporäre Variable
- REM IErr = Errorlevel für MAKETEMP
- REM nTemp = temporäre Variable
- REM
- REM Autor: Bernd Schemmer
- REM Bäckerweg 48
- REM 60316 Frankfurt
- REM Tel.: (069) 4 97 04 84
- REM
- REM Vertrieb: MAKETEMP ist Freeware
- REM
- REM --------------------------------------------------------------------
-
- pushd
- UNSET /Q _date
- SET IErr=1
-
- IFF %@name[%_4ver] GE 5 THEN
- REM *** erst ab 4DOS V5.0 möglich
- ON BREAK GOTO UserAbort
- ENDIFF
-
- REM --------------------------
- REM *** freien Speicher im Environment überprüfen
- REM
- IFF 0%_env LT 0100 THEN
- ECHO. [MAKETEMP] --- Zuwenig freier Speicher im Environment!
- GOTO EndProg
- ENDIFF
-
- REM --------------------------
- REM *** "Root"-Verzeichnis für das neue temporäre Verzeichnis überprüfen
- REM
- IFF "%temp%" != "" THEN
- IFF %@ready[%temp%] == 1 THEN
- IFF isDir %temp% THEN
- ECHO. [MAKETEMP] --- Das neue Verzeichnis wird im Verzeichnis %temp% erstellt.
- SET IErr=0
- ENDIFF
- ENDIFF
- ENDIFF
-
- IFF "%iErr%" != "0" THEN
- ECHO. [MAKETEMP] --- Temporäres "Root"-Verzeichnis "%temp%" nicht gefunden!
- GOTO EndProg
- ENDIFF
-
- SET iErr=1
-
- cdd %temp%
- IFF %_? != 0 .OR. %? != 0 THEN
- ECHO. [MAKETEMP] --- Fehler beim Wechseln ins Verzeichnis "%temp%"!
- GOTO EndProg
- ENDIFF
-
- REM --------------------------
- REM *** Datum konvertieren
- REM
- IFF "%@substr[%_date,2,1]" == "." THEN
- REM *** Datum im deutschen Format
- SET date=%@substr[%_date%,6,2]%@substr[%_date%,3,2]%@substr[%_date%,0,2]
- ELSE
- REM *** Datum im amerikanischen Format
- SET date=%@substr[%_date%,6,2]%@substr[%_date%,0,2]%@substr[%_date%,3,2]
- ENDIFF
-
- REM --------------------------
- REM *** Testen, ob die Aufräumarbeiten für heute schon erledigt wurden
- REM
-
- REM *** Test-and-Set-Semaphor für Batch-Dateien
- REM
- MD %date%.#OK >&>NUL
- IF %_? != 0 .OR. %? != 0 GOTO PrologOk
- ECHO. -- Temporäres Verzeichnis für eine DOS-Box unter OS/2 -- >!%date%.#OK\$$TEMP$$
-
- REM *** Löschen aller nicht mehr benötigten temporären Verzeichnisse
- REM
-
- ECHO. [MAKETEMP] --- Lösche nicht mehr benötigte Verzeichnisse in %_cwd% ...
- FOR /AD %%z IN (*.#??) DO (
- IFF %@name[%z] LT %date% THEN
-
- ECHO. *** Add the parameter /y to suppress the confirmation
- IF EXIST %z%\$$TEMP$$ del /s/x/z %z
-
- ENDIFF
- )
-
- REM --------------------------
- REM *** Namen des neuen temporären Verzeichnisses ermitteln
- REM
- :PrologOk
-
- ECHO. [MAKETEMP] --- Ermittle den Namen für ein neues temporäres Verzeichnis ...
- SET count=01
-
- :GetDirLoop
- REM *** Environment-Variable für das temporäre Verzeichnis setzen
- SET NTEMP=%_cwd%\%date%.#%count%
- md %ntemp% >&>NUL
- IF %_? == 0 .AND. %? == 0 GOTO DirOk
- SET count=%@eval[%count%+1]
- IF %count% LT 100 GOTO GetDirLoop
-
- ECHO.
- ECHO. [MAKETEMP] --- Fehler: Kann kein neues temporäres Verzeichnis erstellen!
- GOTO EndProg
-
- :DirOk
- ECHO. -- Temporäres Verzeichnis für eine DOS-Box von OS/2 -- >!%NTEMP%\$$TEMP$$
-
- ECHO. [MAKETEMP] --- Das neue temporäre Verzeichnis ist %NTEMP%.
-
- SET TEMP=%NTEMP%
- SET iErr=0
-
- :EndProg
- IFF "%iErr%" != "0" THEN
- UNSET /Q NTEMP
- ECHO.
- ECHO. --- Bitte die Fehlermeldung mit J bestätigen ---
- INKEY /K"jJ" %%c >NUL
- ENDIFF
-
- :EndProg1
- REM *** temporäre Environment-Variablen löschen
- UNSET /Q date count c ntemp
-
- popd
- QUIT %_iErr%
-
- :UserAbort
- ECHO. [MAKETEMP] --- Programm durch CTRL-BREAK abgebrochen!
- SET iErr=255
- GOTO EndProg1
-
-