@ECHO OFF
IF X%1X == XX GOTO SHOWHELP
GOTO CKFNC
:SHOWHELP
ECHO ๚
ECHO Format for this command:  PRESERVE archive-file-name [file-spec]
ECHO ๚
ECHO Examples:  PRESERVE INVOICES            Archives all files to A:
ECHO            PRESERVE DATABASE *.DAT      Archives DAT files to A:
ECHO ๚
ECHO You must be in the directory which you want to back up to diskette.
ECHO The archive must not exceed the capacity of one floppy.
ECHO ๚
GOTO DONE
REM ---------- Check for filename collision ----------
:CKFNC
IF EXIST %1.ZIP GOTO ALREADY
GOTO NOZIP
:ALREADY
CLS
ECHO %1.ZIP already exists in this directory -- choose a different name.
GOTO DONE
REM ---------- Review command ----------
:NOZIP
ECHO ๚
ECHO ษออออออออออป
ECHO บ PRESERVE บ
ECHO ศออออออออออผ
IF X%2X == XX GOTO ALLOFIT
ECHO ๚
ECHO Preserving  %2  on  %1  archive on drive A:
GOTO PUTDISK
REM ---------- Review directory ----------
:ALLOFIT
DIR /W
QUERY Do you want to preserve this directory on diskette?  (Y/N)  @ YN
IF ERRORLEVEL 3 GOTO DONE
REM ---------- Format diskette if needed ----------
:PUTDISK
CLS
ECHO Insert the diskette in the A: drive.
QUERY Should the diskette be formatted?  (Y/N)  @YN
IF ERRORLEVEL 2 GOTO SHOWA
FORMAT A:
REM Modify the following line to feed the answers into FORMAT
REM FORMAT A: <C:\MISCUTIL\FMT.INP
GOTO TESTCU
REM ---------- Show A: ----------
:SHOWA
CLS
ECHO Directory of the A: drive ...
DIR A:
QUERY Continue?  (Y/N)  @ YN
IF ERRORLEVEL 3 GOTO DONE
REM ---------- Test need for clean-up ----------
:TESTCU
IF X%2X == XX GOTO DELNE
GOTO MAKEZIP
REM ---------- Delete non-essential files ----------
:DELNE
QUERY Delete BAK, BK! and TPU files?  @ YN
IF ERRORLEVEL 3 GOTO DELZIP
@ECHO ON
DEL *.BAK
DEL *.BK!
DEL *.TPU
@ECHO OFF
REM ---------- Delete archives ----------
:DELZIP
IF EXIST *.ZIP GOTO DODELZIP
GOTO MAKEZIP
:DODELZIP
DIR *.ZIP /W
QUERY Delete archive(s)?  @YN
IF ERRORLEVEL 2 GOTO MAKEZIP
QUERY Are you SURE you want to delete ZIP and PAK files?  @YN
IF ERRORLEVEL 2 GOTO MAKEZIP
@ECHO ON
DEL *.ZIP
DEL *.PAK
@ECHO OFF
REM ---------- Create archive ----------
:MAKEZIP
IF X%2X == XX GOTO NOSPEC
PKZIP -aex %1 %2
IF ERRORLEVEL 0 GOTO DOCOPY
GOTO ZIPFAIL
:NOSPEC
PKZIP -aex %1 *.*
IF ERRORLEVEL 0 GOTO DOCOPY
:ZIPFAIL
REM Many archiving programs don't set ErrorLevel
ECHO อออ ARCHIVE FAILED! อออ
ECHO Nothing  was  preserved
ECHO อออออออออออออออออออออออ
DEL %1.ZIP
GOTO DONE
REM ---------- Copy archive to diskette ----------
:DOCOPY
ECHO ๚
COPY %1.ZIP A:
IF ERRORLEVEL 0 GOTO CLEANUP
ECHO อออ COPY FAILED! อออ
ECHO ZIP file not deleted
ECHO ออออออออออออออออออออ
GOTO DONE
REM ---------- Clean up ----------
:CLEANUP
DEL %1.ZIP
ECHO ๚
ECHO PRESERVE successful
DIR A:
:DONE
