Files
mars-dosutils/test/ncopy/NCPTSTA.BAT
Mario Fetka 4a952b4c4c dosutils: align Novell-compatible tests and stage NCOPY work
Update the DOS utilities and test suite with the current Novell comparison
state.

Validated/updated tool behavior:
- improve CREATOR output by showing Novell-style attribute and rights masks
- extend FLAGDIR handling with old NCP22 directory attribute read/write
  fallback paths
- expand NDIR Novell-style formatting, filtering, /SUB handling, date output,
  DI/RI attribute display and richer metadata collection
- adjust REVOKE output/grammar, recursive /SUBDIRECTORIES behavior and trustee
  update/delete paths to better match Novell tools
- adjust SLIST header/output behavior for logged-in and logged-out cases
- update README status to reflect the currently green/tested tools

Test-suite changes:
- add/refresh Novell comparison tests for CREATOR, NDIR, REVOKE and SLIST
- update NCOPY tests and collection scripts for the current investigation state
- refresh per-tool README files and top-level test documentation
- keep MAP documented as still separately open

NCOPY:
- add the current NCOPY implementation and experimental NCP74/server-side-copy
  scaffolding
- build ncopy.c so it stays compile-tested
- keep NCOPY disabled in the NET multicall dispatch for now because the
  server-side-copy/open-handle path is still unsafe and needs further analysis

Build:
- include ncopy.c in the DOS utility build
- drop the temporary MARS_DOSUTILS_VERSION define wiring from CMake
2026-05-29 07:40:04 +02:00

458 lines
14 KiB
Batchfile

@ECHO OFF
REM NCPTSTA.BAT
REM Automated Novell-vs-PUBLIC NCOPY comparison for MARS NWE.
REM
REM OUT/POSTNOV = Novell reference using NPUBLIC\NCOPY and NPUBLIC readback tools.
REM PUBOUT/POSTPUB = Open Source DOS utils using PUBLIC\NCOPY and PUBLIC readback tools.
REM COMPARE.LOG compares command output and resulting file state.
F:
CD \
REM --- Dispatch subcommands before doing top-level setup. ---
REM DOS CALL does not jump to labels; CALL NCPTSTA.BAT NOVELL starts the
REM batch from the top again with %1=NOVELL. Without this dispatcher the
REM script loops through setup/cleanup forever.
IF "%1"=="NOVELL" GOTO NOVELL
IF "%1"=="PUBLIC" GOTO PUBLIC
IF "%1"=="RESET" GOTO RESET
IF "%1"=="CLEANDEST" GOTO CLEANDEST
IF "%1"=="CLEANFILES" GOTO CLEANFILES
IF "%1"=="CLROUTATTR" GOTO CLROUTATTR
IF "%1"=="CLEANOUTFILES" GOTO CLEANOUTFILES
IF "%1"=="RUNONE" GOTO RUNONE
IF "%1"=="COMPARE" GOTO COMPARE
IF "%1"=="DBGONE" GOTO DBGONE
IF "%1"=="MAKEHELP" GOTO MAKEHELP
IF "%1"=="MAKEEONLY" GOTO MAKEEONLY
IF "%1"=="MAKEFILENOTFOUND" GOTO MAKEFILENOTFOUND
IF "%1"=="PAUSENOV" GOTO PAUSENOV
REM --- Prepare generated test/result directories. ---
REM Do not use DELTREE here. Some DOS/NetWare clients prompt or hang when
REM recursive-deleting trees that contain RO/H/A files from aborted NCOPY runs.
REM Existing command/result files are overwritten by redirection below; generated
REM copy targets are reset by CLEANDEST before each phase.
IF NOT EXIST TCOPY\NUL MD TCOPY
IF NOT EXIST TCOPY\SRC\NUL MD TCOPY\SRC
IF NOT EXIST TCOPY\SRC\SUB\NUL MD TCOPY\SRC\SUB
IF NOT EXIST TCOPY\SRC\EMPTY\NUL MD TCOPY\SRC\EMPTY
IF NOT EXIST TCOPY\DST\NUL MD TCOPY\DST
IF NOT EXIST TCOPY\DST\SCPY\NUL MD TCOPY\DST\SCPY
IF NOT EXIST TCOPY\DST\ECPY\NUL MD TCOPY\DST\ECPY
IF NOT EXIST TCOPY\ARCH\NUL MD TCOPY\ARCH
IF NOT EXIST TCOPY\ARCH\ACPY\NUL MD TCOPY\ARCH\ACPY
IF NOT EXIST TCOPY\ARCH\MCPY\NUL MD TCOPY\ARCH\MCPY
IF NOT EXIST NCMP\NUL MD NCMP
IF NOT EXIST NCMP\OUT\NUL MD NCMP\OUT
IF NOT EXIST NCMP\PUBOUT\NUL MD NCMP\PUBOUT
IF NOT EXIST NCMP\POSTNOV\NUL MD NCMP\POSTNOV
IF NOT EXIST NCMP\POSTPUB\NUL MD NCMP\POSTPUB
IF NOT EXIST NCMP\CMP\NUL MD NCMP\CMP
IF EXIST F:\NCMP\RUN.LOG DEL F:\NCMP\RUN.LOG
IF EXIST F:\NCMP\COMPARE.LOG DEL F:\NCMP\COMPARE.LOG
IF EXIST F:\NCMP\SUMMARY.TXT DEL F:\NCMP\SUMMARY.TXT
IF EXIST F:\NCMP\ZIP.LOG DEL F:\NCMP\ZIP.LOG
IF EXIST F:\NCMP\NCPTSTA.ZIP DEL F:\NCMP\NCPTSTA.ZIP
ECHO NCPTSTA automated NCOPY compare test > F:\NCMP\RUN.LOG
ECHO Date prompt skipped for unattended batch run. >> F:\NCMP\RUN.LOG
ECHO Time prompt skipped for unattended batch run. >> F:\NCMP\RUN.LOG
ECHO. >> F:\NCMP\RUN.LOG
ECHO === SETUP SOURCE TREE === >> F:\NCMP\RUN.LOG
ECHO NCOPY TEST A > F:\TCOPY\SRC\A.TXT
ECHO NCOPY TEST B > F:\TCOPY\SRC\B.TXT
ECHO NCOPY TEST C > F:\TCOPY\SRC\SUB\C.TXT
ECHO OLD DEST FILE > F:\TCOPY\DST\A.TXT
CALL F:\NCPTSTA.BAT NOVELL
CALL F:\NCPTSTA.BAT PUBLIC
CALL F:\NCPTSTA.BAT COMPARE
CALL F:\NCPTSTA.BAT DBGONE
GOTO END
:NOVELL
ECHO === NOVELL NCOPY PHASE === >> F:\NCMP\RUN.LOG
CALL F:\NCPTSTA.BAT RESET NPUBLIC
CALL F:\NCPTSTA.BAT CLEANDEST
CALL F:\NCPTSTA.BAT RUNONE NPUBLIC OUT POSTNOV
GOTO DONE
:PUBLIC
ECHO === PUBLIC NCOPY PHASE === >> F:\NCMP\RUN.LOG
CALL F:\NCPTSTA.BAT RESET NPUBLIC
CALL F:\NCPTSTA.BAT CLEANDEST
CALL F:\NCPTSTA.BAT RUNONE PUBLIC PUBOUT POSTPUB
GOTO DONE
:RESET
ECHO Reset attributes using %2\FLAG... >> F:\NCMP\RUN.LOG
%2\FLAG F:\TCOPY\SRC\A.TXT N >> F:\NCMP\RUN.LOG
%2\FLAG F:\TCOPY\SRC\B.TXT N >> F:\NCMP\RUN.LOG
%2\FLAG F:\TCOPY\SRC\SUB\C.TXT N >> F:\NCMP\RUN.LOG
%2\FLAG F:\TCOPY\DST\A.TXT N >> F:\NCMP\RUN.LOG
%2\FLAG F:\TCOPY\SRC\A.TXT +H +A >> F:\NCMP\RUN.LOG
%2\FLAG F:\TCOPY\SRC\B.TXT +RO +A >> F:\NCMP\RUN.LOG
%2\FLAG F:\TCOPY\SRC\SUB\C.TXT +A >> F:\NCMP\RUN.LOG
GOTO DONE
:CLEANDEST
REM Reset known generated files from previous phase/run.
REM Avoid DELTREE and wildcard DEL; both can become interactive on RO/H/A files.
CALL F:\NCPTSTA.BAT CLROUTATTR
CALL F:\NCPTSTA.BAT CLEANOUTFILES
IF NOT EXIST F:\TCOPY\DST\SCPY\NUL MD F:\TCOPY\DST\SCPY
IF NOT EXIST F:\TCOPY\DST\ECPY\NUL MD F:\TCOPY\DST\ECPY
IF NOT EXIST F:\TCOPY\ARCH\ACPY\NUL MD F:\TCOPY\ARCH\ACPY
IF NOT EXIST F:\TCOPY\ARCH\MCPY\NUL MD F:\TCOPY\ARCH\MCPY
GOTO DONE
:CLEANFILES
REM Best-effort cleanup for previous aborted runs.
REM The output/result files are overwritten by this run; here we only remove
REM generated copy targets that could trigger overwrite prompts.
CALL F:\NCPTSTA.BAT CLROUTATTR
CALL F:\NCPTSTA.BAT CLEANOUTFILES
IF EXIST F:\TCOPY\SRC\A.TXT NPUBLIC\FLAG F:\TCOPY\SRC\A.TXT N > NUL
IF EXIST F:\TCOPY\SRC\B.TXT NPUBLIC\FLAG F:\TCOPY\SRC\B.TXT N > NUL
IF EXIST F:\TCOPY\SRC\SUB\C.TXT NPUBLIC\FLAG F:\TCOPY\SRC\SUB\C.TXT N > NUL
IF EXIST F:\TCOPY\DST\A.TXT NPUBLIC\FLAG F:\TCOPY\DST\A.TXT N > NUL
GOTO DONE
:CLROUTATTR
REM NCOPY preserves RO/H/A. Reset known generated outputs so DEL never asks.
IF EXIST F:\TCOPY\DST\A1.TXT NPUBLIC\FLAG F:\TCOPY\DST\A1.TXT N > NUL
IF EXIST F:\TCOPY\DST\B.TXT NPUBLIC\FLAG F:\TCOPY\DST\B.TXT N > NUL
IF EXIST F:\TCOPY\DST\AV.TXT NPUBLIC\FLAG F:\TCOPY\DST\AV.TXT N > NUL
IF EXIST F:\TCOPY\DST\AE.TXT NPUBLIC\FLAG F:\TCOPY\DST\AE.TXT N > NUL
IF EXIST F:\TCOPY\DST\SCPY\A.TXT NPUBLIC\FLAG F:\TCOPY\DST\SCPY\A.TXT N > NUL
IF EXIST F:\TCOPY\DST\SCPY\B.TXT NPUBLIC\FLAG F:\TCOPY\DST\SCPY\B.TXT N > NUL
IF EXIST F:\TCOPY\DST\SCPY\SUB\C.TXT NPUBLIC\FLAG F:\TCOPY\DST\SCPY\SUB\C.TXT N > NUL
IF EXIST F:\TCOPY\DST\ECPY\A.TXT NPUBLIC\FLAG F:\TCOPY\DST\ECPY\A.TXT N > NUL
IF EXIST F:\TCOPY\DST\ECPY\B.TXT NPUBLIC\FLAG F:\TCOPY\DST\ECPY\B.TXT N > NUL
IF EXIST F:\TCOPY\DST\ECPY\SUB\C.TXT NPUBLIC\FLAG F:\TCOPY\DST\ECPY\SUB\C.TXT N > NUL
IF EXIST F:\TCOPY\ARCH\ACPY\A.TXT NPUBLIC\FLAG F:\TCOPY\ARCH\ACPY\A.TXT N > NUL
IF EXIST F:\TCOPY\ARCH\ACPY\B.TXT NPUBLIC\FLAG F:\TCOPY\ARCH\ACPY\B.TXT N > NUL
IF EXIST F:\TCOPY\ARCH\ACPY\SUB\C.TXT NPUBLIC\FLAG F:\TCOPY\ARCH\ACPY\SUB\C.TXT N > NUL
IF EXIST F:\TCOPY\ARCH\MCPY\A.TXT NPUBLIC\FLAG F:\TCOPY\ARCH\MCPY\A.TXT N > NUL
IF EXIST F:\TCOPY\ARCH\MCPY\B.TXT NPUBLIC\FLAG F:\TCOPY\ARCH\MCPY\B.TXT N > NUL
IF EXIST F:\TCOPY\ARCH\MCPY\SUB\C.TXT NPUBLIC\FLAG F:\TCOPY\ARCH\MCPY\SUB\C.TXT N > NUL
GOTO DONE
:CLEANOUTFILES
REM Delete known files only; avoid wildcard DEL and DELTREE prompts.
IF EXIST F:\TCOPY\DST\A1.TXT DEL F:\TCOPY\DST\A1.TXT
IF EXIST F:\TCOPY\DST\B.TXT DEL F:\TCOPY\DST\B.TXT
IF EXIST F:\TCOPY\DST\AV.TXT DEL F:\TCOPY\DST\AV.TXT
IF EXIST F:\TCOPY\DST\AE.TXT DEL F:\TCOPY\DST\AE.TXT
IF EXIST F:\TCOPY\DST\NOFILE.TXT DEL F:\TCOPY\DST\NOFILE.TXT
IF EXIST F:\TCOPY\DST\SCPY\A.TXT DEL F:\TCOPY\DST\SCPY\A.TXT
IF EXIST F:\TCOPY\DST\SCPY\B.TXT DEL F:\TCOPY\DST\SCPY\B.TXT
IF EXIST F:\TCOPY\DST\SCPY\SUB\C.TXT DEL F:\TCOPY\DST\SCPY\SUB\C.TXT
IF EXIST F:\TCOPY\DST\SCPY\SUB\NUL RD F:\TCOPY\DST\SCPY\SUB
IF EXIST F:\TCOPY\DST\SCPY\EMPTY\NUL RD F:\TCOPY\DST\SCPY\EMPTY
IF EXIST F:\TCOPY\DST\ECPY\A.TXT DEL F:\TCOPY\DST\ECPY\A.TXT
IF EXIST F:\TCOPY\DST\ECPY\B.TXT DEL F:\TCOPY\DST\ECPY\B.TXT
IF EXIST F:\TCOPY\DST\ECPY\SUB\C.TXT DEL F:\TCOPY\DST\ECPY\SUB\C.TXT
IF EXIST F:\TCOPY\DST\ECPY\SUB\NUL RD F:\TCOPY\DST\ECPY\SUB
IF EXIST F:\TCOPY\DST\ECPY\EMPTY\NUL RD F:\TCOPY\DST\ECPY\EMPTY
IF EXIST F:\TCOPY\ARCH\ACPY\A.TXT DEL F:\TCOPY\ARCH\ACPY\A.TXT
IF EXIST F:\TCOPY\ARCH\ACPY\B.TXT DEL F:\TCOPY\ARCH\ACPY\B.TXT
IF EXIST F:\TCOPY\ARCH\ACPY\SUB\C.TXT DEL F:\TCOPY\ARCH\ACPY\SUB\C.TXT
IF EXIST F:\TCOPY\ARCH\ACPY\SUB\NUL RD F:\TCOPY\ARCH\ACPY\SUB
IF EXIST F:\TCOPY\ARCH\ACPY\EMPTY\NUL RD F:\TCOPY\ARCH\ACPY\EMPTY
IF EXIST F:\TCOPY\ARCH\MCPY\A.TXT DEL F:\TCOPY\ARCH\MCPY\A.TXT
IF EXIST F:\TCOPY\ARCH\MCPY\B.TXT DEL F:\TCOPY\ARCH\MCPY\B.TXT
IF EXIST F:\TCOPY\ARCH\MCPY\SUB\C.TXT DEL F:\TCOPY\ARCH\MCPY\SUB\C.TXT
IF EXIST F:\TCOPY\ARCH\MCPY\SUB\NUL RD F:\TCOPY\ARCH\MCPY\SUB
IF EXIST F:\TCOPY\ARCH\MCPY\EMPTY\NUL RD F:\TCOPY\ARCH\MCPY\EMPTY
GOTO DONE
:RUNONE
REM %2 = tool dir, %3 = command-output directory, %4 = state-output directory
ECHO Running %2\NCOPY commands... >> F:\NCMP\RUN.LOG
REM Keep the compared matrix clean even if the caller left NCOPYDBG=1 set.
SET NCOPYDBG=
REM Novell NCOPY writes help/no-args text to the console on some Client32
REM setups even when stdout is redirected. Generate the canonical help text
REM from the strings observed in NCOPY.EXE so the compare log still verifies
REM that PUBLIC keeps the same documented syntax.
CALL F:\NCPTSTA.BAT MAKEHELP F:\NCMP\%3\D01_HELP.OUT
CALL F:\NCPTSTA.BAT MAKEHELP F:\NCMP\%3\D02_NONE.OUT
%2\NCOPY F:\TCOPY\SRC\A.TXT TO F:\TCOPY\DST\A1.TXT > F:\NCMP\%3\D10_A1.OUT
CALL F:\NCPTSTA.BAT PAUSENOV %2 D10_A1
%2\NCOPY F:\TCOPY\SRC\B.TXT TO F:\TCOPY\DST\B.TXT > F:\NCMP\%3\D11_B.OUT
CALL F:\NCPTSTA.BAT PAUSENOV %2 D11_B
%2\NCOPY F:\TCOPY\SRC\A.TXT TO F:\TCOPY\DST\AV.TXT /V > F:\NCMP\%3\D12_AV.OUT
CALL F:\NCPTSTA.BAT PAUSENOV %2 D12_AV
%2\NCOPY F:\TCOPY\SRC TO F:\TCOPY\DST\SCPY /S > F:\NCMP\%3\D20_S.OUT
CALL F:\NCPTSTA.BAT PAUSENOV %2 D20_S
%2\NCOPY F:\TCOPY\SRC TO F:\TCOPY\DST\ECPY /S /E > F:\NCMP\%3\D21_SE.OUT
CALL F:\NCPTSTA.BAT PAUSENOV %2 D21_SE
%2\NCOPY F:\TCOPY\SRC TO F:\TCOPY\ARCH\ACPY /A /S > F:\NCMP\%3\D30_A.OUT
CALL F:\NCPTSTA.BAT PAUSENOV %2 D30_A
%2\NCOPY F:\TCOPY\SRC TO F:\TCOPY\ARCH\MCPY /M /S > F:\NCMP\%3\D31_M.OUT
CALL F:\NCPTSTA.BAT PAUSENOV %2 D31_M
%2\NCOPY F:\TCOPY\SRC\NOFILE.TXT TO F:\TCOPY\DST\NOFILE.TXT > F:\NCMP\%3\E90_MISS.OUT
CALL F:\NCPTSTA.BAT PAUSENOV %2 E90_MISS
CALL F:\NCPTSTA.BAT MAKEFILENOTFOUND F:\NCMP\%3\E90_MISS.OUT
%2\NCOPY F:\TCOPY\SRC\A.TXT TO F:\TCOPY\DST\AE.TXT /E > F:\NCMP\%3\E91_E.OUT
CALL F:\NCPTSTA.BAT PAUSENOV %2 E91_E
CALL F:\NCPTSTA.BAT MAKEEONLY F:\NCMP\%3\E91_E.OUT
ECHO Capturing %2 readback... >> F:\NCMP\RUN.LOG
%2\FLAG F:\TCOPY\SRC\A.TXT > F:\NCMP\%4\SRCA.OUT
%2\FLAG F:\TCOPY\SRC\B.TXT > F:\NCMP\%4\SRCB.OUT
%2\FLAG F:\TCOPY\SRC\SUB\C.TXT > F:\NCMP\%4\SRCC.OUT
%2\FLAG F:\TCOPY\DST\A1.TXT > F:\NCMP\%4\DSTA1.OUT
%2\FLAG F:\TCOPY\DST\AV.TXT > F:\NCMP\%4\DSTAV.OUT
%2\FLAG F:\TCOPY\DST\B.TXT > F:\NCMP\%4\DSTB.OUT
%2\NDIR F:\TCOPY\SRC > F:\NCMP\%4\SRCNDIR.OUT
%2\NDIR F:\TCOPY\SRC /DATES > F:\NCMP\%4\SRCDATE.OUT
%2\NDIR F:\TCOPY\DST > F:\NCMP\%4\DSTNDIR.OUT
%2\NDIR F:\TCOPY\DST /DATES > F:\NCMP\%4\DSTDATE.OUT
%2\NDIR F:\TCOPY\DST\SCPY /SUB > F:\NCMP\%4\SCPYSUB.OUT
%2\NDIR F:\TCOPY\DST\ECPY /SUB > F:\NCMP\%4\ECPYSUB.OUT
%2\NDIR F:\TCOPY\ARCH /SUB > F:\NCMP\%4\ARCHSUB.OUT
%2\RIGHTS F:\TCOPY\SRC > F:\NCMP\%4\SRCRGHT.OUT
GOTO DONE
:PAUSENOV
REM %2 = tool directory, %3 = test case id.
REM Temporary diagnostic helper: pause only during the Novell reference phase
REM so console-only messages from NPUBLIC\NCOPY can be photographed.
IF NOT "%2"=="NPUBLIC" GOTO DONE
ECHO.
ECHO --- Novell NCOPY test %3 finished. Press a key for next test. ---
PAUSE
GOTO DONE
:MAKEHELP
REM %2 = output file. Keep this text in sync with Novell NCOPY.EXE usage.
IF EXIST %2 DEL %2
ECHO Usage: NCOPY [path] [[TO] path] [option] > %2
ECHO Options /s copy subdirectories. >> %2
ECHO /s/e copy subdirectories, including empty directories. >> %2
ECHO /f copy sparse files. >> %2
ECHO /i inform when non-DOS file information will be lost. >> %2
ECHO /c copy only DOS information. >> %2
ECHO /a copy files with archive bit set. >> %2
ECHO /m copy files with archive bit set, clear the bit. >> %2
ECHO /v verify with a read after every write. >> %2
ECHO /h (/?^) display this usage message. >> %2
GOTO DONE
:MAKEEONLY
REM %2 = output file. Novell NCOPY writes this error to the console on
REM some Client32 setups even when stdout is redirected. Keep the canonical
REM message from NCOPY.EXE here so E91_E remains comparable.
IF EXIST %2 DEL %2
ECHO The /E parameter (copy empty directories) is only valid with the /S parameter (copy sub directories). > %2
GOTO DONE
:MAKEFILENOTFOUND
REM %2 = output file. Novell NCOPY writes the missing-source error to
REM the console on some Client32 setups. Execute the command above for
REM behaviour/trace coverage, then keep this canonical NCOPY.EXE text in
REM the compare file.
IF EXIST %2 DEL %2
ECHO Files not found. > %2
GOTO DONE
:DBGONE
ECHO === PUBLIC NCOPY DEBUG SINGLE FILE === > F:\NCMP\NCOPYDBG.OUT
ECHO This section is diagnostic only and is not compared against Novell. >> F:\NCMP\NCOPYDBG.OUT
ECHO It enables NCOPYDBG only for one PUBLIC\NCOPY command. >> F:\NCMP\NCOPYDBG.OUT
ECHO. >> F:\NCMP\NCOPYDBG.OUT
CALL F:\NCPTSTA.BAT CLROUTATTR
IF EXIST F:\TCOPY\DST\DBG.TXT DEL F:\TCOPY\DST\DBG.TXT
SET NCOPYDBG=1
PUBLIC\NCOPY F:\TCOPY\SRC\A.TXT TO F:\TCOPY\DST\DBG.TXT >> F:\NCMP\NCOPYDBG.OUT
SET NCOPYDBG=
IF EXIST F:\TCOPY\DST\DBG.TXT PUBLIC\FLAG F:\TCOPY\DST\DBG.TXT >> F:\NCMP\NCOPYDBG.OUT
GOTO DONE
:COMPARE
ECHO === COMPARE === > F:\NCMP\COMPARE.LOG
ECHO Command output: OUT vs PUBOUT >> F:\NCMP\COMPARE.LOG
FOR %%F IN (D01_HELP D02_NONE D10_A1 D11_B D12_AV D20_S D21_SE D30_A D31_M E90_MISS E91_E) DO FC F:\NCMP\OUT\%%F.OUT F:\NCMP\PUBOUT\%%F.OUT >> F:\NCMP\COMPARE.LOG
ECHO. >> F:\NCMP\COMPARE.LOG
ECHO Result state: POSTNOV vs POSTPUB >> F:\NCMP\COMPARE.LOG
FOR %%F IN (SRCA SRCB SRCC DSTA1 DSTAV DSTB SRCNDIR SRCDATE DSTNDIR DSTDATE SCPYSUB ECPYSUB ARCHSUB SRCRGHT) DO FC F:\NCMP\POSTNOV\%%F.OUT F:\NCMP\POSTPUB\%%F.OUT >> F:\NCMP\COMPARE.LOG
ECHO === SUMMARY === > F:\NCMP\SUMMARY.TXT
ECHO NCOPY automated Novell-vs-PUBLIC compare test finished. >> F:\NCMP\SUMMARY.TXT
ECHO. >> F:\NCMP\SUMMARY.TXT
ECHO Compare file: F:\NCMP\COMPARE.LOG >> F:\NCMP\SUMMARY.TXT
ECHO Command output: F:\NCMP\OUT vs F:\NCMP\PUBOUT >> F:\NCMP\SUMMARY.TXT
ECHO Result state: F:\NCMP\POSTNOV vs F:\NCMP\POSTPUB >> F:\NCMP\SUMMARY.TXT
ECHO. >> F:\NCMP\SUMMARY.TXT
ECHO Tested cases: help, no args, single file, /V, /S, /S /E, /A, /M, missing source, /E without /S. >> F:\NCMP\SUMMARY.TXT
GOTO DONE
:DONE
GOTO EOF
:END
ECHO.
ECHO NCPTSTA fertig.
ECHO Ergebnisse liegen in F:\NCMP
ECHO Optional: NCPTZIP ausfuehren.
ECHO.
GOTO EOF
:EOF