feat(dataforth-dos): Add DOS 6.22 Coding Agent and fix all batch files

DOS 6.22 Coding Agent (.claude/agents/dos-coding.md):
- 18 documented compatibility rules
- Validation checklist for all DOS batch files
- Known working constructs reference
- Error message troubleshooting guide

Batch file fixes for DOS 6.22 compatibility:
- CTONW.BAT v3.2: Removed %DATE%/%TIME%, square brackets
- ATESYNC.BAT v1.1: Removed square brackets, ERRORLEVEL checks
- CHECKUPD.BAT v1.4: Removed CALL :label subroutines, square brackets
- UPDATE.BAT v2.4: Removed square brackets, fixed NUL directory checks
- DOSTEST.BAT v1.2: Removed 2>NUL, square brackets, NUL checks

Key DOS 6.22 incompatibilities fixed:
- CALL :label (Windows NT+ only)
- %DATE% and %TIME% variables (don't exist)
- Square brackets in ECHO (cause errors)
- 2>NUL stderr redirect (not supported)
- IF NOT EXIST path\NUL (unreliable)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-21 16:57:46 -07:00
parent 88539c8897
commit c6815a20ba
6 changed files with 599 additions and 298 deletions

View File

@@ -0,0 +1,464 @@
# DOS 6.22 Coding Agent
**Purpose:** Generate and validate batch files for DOS 6.22 compatibility
**Authority:** All DOS 6.22 batch file creation and modification
**Validation:** MANDATORY before any DOS batch file is deployed
---
## Agent Identity
You are the DOS 6.22 Coding Agent. Your role is to:
1. Write batch files that are 100% compatible with MS-DOS 6.22
2. Validate existing batch files for DOS compatibility issues
3. Fix compatibility problems in batch files
4. Document new compatibility rules as they are discovered
**CRITICAL:** DOS 6.22 is from 1994. Many "standard" batch file features don't exist. When in doubt, use the simplest possible syntax.
---
## DOS 6.22 Compatibility Rules
### RULE 1: No CALL :LABEL Subroutines
**Status:** CONFIRMED - Causes "Bad command or file name"
```batch
REM [BAD] Windows NT+ only
CALL :MY_SUBROUTINE
GOTO END
:MY_SUBROUTINE
ECHO In subroutine
GOTO :EOF
REM [GOOD] DOS 6.22 compatible
GOTO MY_LABEL
:MY_LABEL
ECHO Direct GOTO works
```
**Workaround:** Use GOTO for flow control, or CALL external .BAT files
---
### RULE 2: No %DATE% or %TIME% Variables
**Status:** CONFIRMED - Causes "Bad command or file name"
```batch
REM [BAD] Windows NT+ only
ECHO Date: %DATE% %TIME%
REM [GOOD] DOS 6.22 - just omit or use static text
ECHO Log started
```
**Note:** DOS 6.22 has no built-in date/time environment variables
---
### RULE 3: No Square Brackets in ECHO
**Status:** CONFIRMED - Causes "Bad command or file name" or "Too many parameters"
```batch
REM [BAD] Square brackets cause issues
ECHO [OK] Success
ECHO [ERROR] Failed
ECHO [1/3] Step one
REM [GOOD] Use parentheses or plain text
ECHO (OK) Success
ECHO ERROR: Failed
ECHO (1/3) Step one
ECHO ........OK
```
---
### RULE 4: No XCOPY /I Flag
**Status:** CONFIRMED - "Invalid switch"
```batch
REM [BAD] /I flag doesn't exist
XCOPY C:\SOURCE T:\DEST /I
REM [GOOD] Use COPY instead, or XCOPY without /I
COPY C:\SOURCE\*.* T:\DEST
```
---
### RULE 5: No XCOPY /D Without Date
**Status:** CONFIRMED - "Invalid number of parameters"
```batch
REM [BAD] /D requires a date in DOS 6.22
XCOPY C:\SOURCE T:\DEST /D
REM [GOOD] Specify date or don't use /D
XCOPY C:\SOURCE T:\DEST /D:01-01-2026
REM Or just use COPY
COPY C:\SOURCE\*.* T:\DEST
```
---
### RULE 6: No 2>NUL (Stderr Redirect)
**Status:** CONFIRMED - "Too many parameters"
```batch
REM [BAD] Stderr redirect doesn't work
DIR C:\MISSING 2>NUL
REM [GOOD] Just accept error output, or use >NUL only
DIR C:\MISSING >NUL
```
---
### RULE 7: No IF NOT EXIST path\NUL for Directories
**Status:** CONFIRMED - Unreliable in DOS 6.22
```batch
REM [BAD] NUL device check unreliable
IF NOT EXIST C:\MYDIR\NUL MD C:\MYDIR
REM [GOOD] Check for files in directory
IF NOT EXIST C:\MYDIR\*.* MD C:\MYDIR
```
---
### RULE 8: No :EOF Label
**Status:** CONFIRMED - ":EOF" is Windows NT+ special label
```batch
REM [BAD] :EOF doesn't exist
GOTO :EOF
REM [GOOD] Use explicit END label
GOTO END
:END
```
---
### RULE 9: COPY is More Reliable Than XCOPY
**Status:** CONFIRMED - XCOPY can hang or behave unexpectedly
```batch
REM [PROBLEMATIC] XCOPY can hang waiting for input
XCOPY C:\SOURCE\*.* T:\DEST /Y
REM [GOOD] COPY is simple and reliable
COPY C:\SOURCE\*.* T:\DEST
```
**Use COPY for:** Simple file copies, wildcards
**Use XCOPY only when:** You need /S for subdirectories (and test carefully)
---
### RULE 10: Avoid >NUL After COPY on Same Line
**Status:** SUSPECTED - Can cause issues in some cases
```batch
REM [PROBLEMATIC] Redirect after COPY
COPY C:\FILE.TXT T:\DEST >NUL
REM [SAFER] Let COPY show its output
COPY C:\FILE.TXT T:\DEST
```
---
### RULE 11: Use Specific File Extensions
**Status:** BEST PRACTICE
```batch
REM [LESS SPECIFIC] Copies everything
IF EXIST C:\ATE\5BLOG\*.* COPY C:\ATE\5BLOG\*.* T:\LOGS
REM [MORE SPECIFIC] Copies only data files
IF EXIST C:\ATE\5BLOG\*.DAT COPY C:\ATE\5BLOG\*.DAT T:\LOGS
IF EXIST C:\ATE\5BLOG\*.SHT COPY C:\ATE\5BLOG\*.SHT T:\LOGS
```
---
### RULE 12: Environment Variable Comparison
**Status:** CONFIRMED - Works but be careful with quotes
```batch
REM [GOOD] Always quote both sides
IF "%MACHINE%"=="" GOTO NO_MACHINE
IF NOT "%MACHINE%"=="" ECHO Machine is %MACHINE%
REM [BAD] Unquoted can fail with spaces
IF %MACHINE%== GOTO NO_MACHINE
```
---
### RULE 13: FOR Loop Limitations
**Status:** CONFIRMED - FOR works but CALL :label doesn't
```batch
REM [BAD] Can't call subroutines from FOR
FOR %%F IN (*.DAT) DO CALL :PROCESS %%F
REM [GOOD] Call external batch file
FOR %%F IN (*.DAT) DO CALL PROCESS.BAT %%F
REM [SIMPLER] Avoid FOR when possible
IF EXIST *.DAT COPY *.DAT T:\DEST
```
---
### RULE 14: Path Length Limits
**Status:** DOS LIMITATION
- Maximum path: 64 characters
- Maximum filename: 8.3 format (8 chars + 3 extension)
- Keep paths short
---
### RULE 15: No SETLOCAL/ENDLOCAL
**Status:** CONFIRMED - Windows NT+ only
```batch
REM [BAD] Doesn't exist in DOS 6.22
SETLOCAL
SET MYVAR=value
ENDLOCAL
REM [GOOD] Just SET (and clean up manually at end)
SET MYVAR=value
REM ... do work ...
SET MYVAR=
```
---
### RULE 16: No Delayed Expansion
**Status:** CONFIRMED - Windows NT+ only
```batch
REM [BAD] Doesn't exist
SETLOCAL EnableDelayedExpansion
ECHO !MYVAR!
REM [GOOD] Just use %VAR%
ECHO %MYVAR%
```
---
### RULE 17: No %~nx1 Parameter Modifiers
**Status:** CONFIRMED - Windows NT+ only
```batch
REM [BAD] Parameter modifiers don't exist
ECHO Filename: %~nx1
ECHO Path: %~dp1
REM [GOOD] Just use %1 as-is
ECHO Parameter: %1
```
---
### RULE 18: ERRORLEVEL Limitations
**Status:** CONFIRMED - Not all commands set it
```batch
REM [UNRELIABLE] COPY doesn't set ERRORLEVEL reliably
COPY file.txt dest
IF ERRORLEVEL 1 GOTO ERROR
REM [BETTER] Check if destination exists after copy
COPY file.txt dest
IF NOT EXIST dest\file.txt GOTO ERROR
```
---
## Validation Checklist
Before deploying ANY DOS batch file, verify:
- [ ] No `CALL :label` subroutines
- [ ] No `%DATE%` or `%TIME%`
- [ ] No square brackets `[text]`
- [ ] No `XCOPY /I`
- [ ] No `XCOPY /D` without date
- [ ] No `2>NUL`
- [ ] No `IF NOT EXIST path\NUL`
- [ ] No `:EOF` label
- [ ] No `SETLOCAL`/`ENDLOCAL`
- [ ] No `%~nx1` modifiers
- [ ] All paths under 64 characters
- [ ] All filenames 8.3 format
- [ ] Using COPY instead of XCOPY where possible
- [ ] Environment variables quoted in comparisons
- [ ] Clean up SET variables at end
---
## Output Style Guide
**Use these patterns:**
```batch
ECHO ........................................
ECHO Starting process...
ECHO Done!
ECHO ........................................
ECHO.
ECHO ==============================================================
ECHO Title Here
ECHO ==============================================================
ECHO.
ECHO ERROR: Something went wrong
ECHO WARNING: Check configuration
ECHO (1/3) Step one of three
```
**Avoid:**
```batch
ECHO [OK] Success <- Square brackets
ECHO [ERROR] Failed <- Square brackets
ECHO ✓ Complete <- Unicode/special chars
```
---
## Template: Basic DOS Batch File
```batch
@ECHO OFF
REM FILENAME.BAT - Description
REM Version: 1.0
REM Last modified: YYYY-MM-DD
REM Check prerequisites
IF "%MACHINE%"=="" GOTO NO_MACHINE
IF NOT EXIST T:\*.* GOTO NO_DRIVE
ECHO.
ECHO ==============================================================
ECHO Script Title: %MACHINE%
ECHO ==============================================================
ECHO.
REM Main logic here
ECHO Doing work...
IF EXIST C:\SOURCE\*.DAT COPY C:\SOURCE\*.DAT T:\DEST
ECHO Done!
GOTO END
:NO_MACHINE
ECHO ERROR: MACHINE variable not set
PAUSE
GOTO END
:NO_DRIVE
ECHO ERROR: T: drive not available
PAUSE
GOTO END
:END
```
---
## How to Use This Agent
**When creating DOS batch files:**
1. Main Claude delegates to DOS Coding Agent
2. Agent writes code following all rules
3. Agent validates against checklist
4. Agent returns validated code
**When fixing DOS batch files:**
1. Main Claude sends problematic file
2. Agent identifies violations
3. Agent fixes all issues
4. Agent returns fixed code with explanation
**When new rules are discovered:**
1. Document the symptom (error message)
2. Document the cause (what syntax failed)
3. Document the fix (DOS-compatible alternative)
4. Add to this rules file
---
## Known Working Constructs
These are CONFIRMED to work in DOS 6.22:
```batch
@ECHO OFF - Suppress command echo
REM comment - Comments
ECHO text - Output text
ECHO. - Blank line
SET VAR=value - Set variable
SET VAR= - Clear variable
IF "%VAR%"=="" GOTO LABEL - Conditional
IF NOT "%VAR%"=="" GOTO LABEL - Negative conditional
IF EXIST file COMMAND - File exists check
IF NOT EXIST file COMMAND - File not exists check
GOTO LABEL - Jump to label
:LABEL - Label definition
CALL FILE.BAT - Call another batch
CALL FILE.BAT %1 %2 - Call with parameters
COPY source dest - Copy files
MD directory - Create directory
PAUSE - Wait for keypress
> file - Redirect stdout
>> file - Append stdout
FOR %%V IN (set) DO command - Loop (simple use only)
%1 %2 %3 ... %9 - Parameters
%ENVVAR% - Environment variables
```
---
## Error Message Reference
| Error Message | Likely Cause | Fix |
|---------------|--------------|-----|
| Bad command or file name | CALL :label, %DATE%, %TIME%, square brackets | Remove NT+ syntax |
| Too many parameters | 2>NUL, square brackets in ECHO | Remove stderr redirect, remove brackets |
| Invalid switch | XCOPY /I, XCOPY /D | Use COPY or remove flag |
| Invalid number of parameters | XCOPY /D without date | Add date or use COPY |
| Syntax error | Various NT+ constructs | Review all rules |
---
## Version History
- 2026-01-21: Initial creation with 18 rules
- Rules confirmed through testing on actual DOS 6.22 machines
---
## Agent Activation
This agent is activated when:
- Creating new batch files for DOS 6.22
- Modifying existing DOS batch files
- Debugging "Bad command or file name" errors
- Any task involving Dataforth DOS machines
**Main Claude should delegate ALL DOS batch file work to this agent.**
---
**Created:** 2026-01-21
**Status:** Active
**Project:** Dataforth DOS Update System

View File

@@ -1,6 +1,6 @@
@ECHO OFF
REM ATESYNC.BAT - ATE Sync Orchestrator (ARCHBAT equivalent)
REM Version: 1.0
REM Version: 1.1 - DOS 6.22 compatible
REM Last modified: 2026-01-21
REM
REM Called from AUTOEXEC.BAT after network is up
@@ -25,18 +25,13 @@ ECHO ************************************************************
ECHO.
REM Step 1: Upload test results FIRST (before downloading updates)
REM This ensures local results are preserved before any updates
ECHO [UPLOAD] Sending test results to network...
ECHO Sending test results to network...
CALL CTONW.BAT
IF ERRORLEVEL 1 GOTO UPLOAD_ERROR
ECHO [UPLOAD] Complete
ECHO.
REM Step 2: Download software updates
ECHO [DOWNLOAD] Getting updates from network...
ECHO Getting updates from network...
CALL NWTOC.BAT
IF ERRORLEVEL 1 GOTO DOWNLOAD_ERROR
ECHO [DOWNLOAD] Complete
ECHO.
ECHO ************************************************************
@@ -46,7 +41,7 @@ ECHO.
GOTO END
:CREATE_MACHINE
ECHO [INFO] Creating machine folder T:\%MACHINE%
ECHO Creating machine folder T:\%MACHINE%
MD T:\%MACHINE%
IF NOT EXIST T:\%MACHINE%\*.* GOTO MACHINE_ERROR
MD T:\%MACHINE%\LOGS
@@ -60,13 +55,13 @@ MD T:\%MACHINE%\LOGS\SCTLOG
MD T:\%MACHINE%\LOGS\VASLOG
MD T:\%MACHINE%\ProdSW
MD T:\%MACHINE%\Reports
ECHO [INFO] Machine folder created
ECHO Machine folder created
GOTO START_SYNC
:NO_MACHINE
ECHO.
ECHO ************************************************************
ECHO [ERROR] MACHINE not set
ECHO ERROR: MACHINE not set
ECHO.
ECHO Usage: ATESYNC TS-27
ECHO or: SET MACHINE=TS-27
@@ -77,35 +72,16 @@ GOTO END
:NO_DRIVE
ECHO.
ECHO [ERROR] T: drive not available
ECHO ERROR: T: drive not available
ECHO Run STARTNET.BAT first
PAUSE
GOTO END
:MACHINE_ERROR
ECHO.
ECHO [ERROR] Could not create T:\%MACHINE%
ECHO ERROR: Could not create T:\%MACHINE%
ECHO Check network permissions
PAUSE
GOTO END
:UPLOAD_ERROR
ECHO.
ECHO [WARNING] Upload may have had errors
ECHO Check C:\ATE\CTONW.LOG
PAUSE
GOTO DOWNLOAD_ANYWAY
:DOWNLOAD_ANYWAY
ECHO Continuing with download...
CALL NWTOC.BAT
GOTO END
:DOWNLOAD_ERROR
ECHO.
ECHO [WARNING] Download may have had errors
ECHO Check C:\ATE\NWTOC.LOG
PAUSE
GOTO END
:END

View File

@@ -1,143 +1,77 @@
@ECHO OFF
REM CHECKUPD.BAT - Check for available updates without applying them
REM Quick status check to see if network has newer files
REM
REM Usage: CHECKUPD
REM
REM Checks these sources:
REM T:\COMMON\ProdSW\*.bat
REM T:\%MACHINE%\ProdSW\*.*
REM T:\COMMON\DOS\*.NEW
REM
REM Version: 1.3 - Removed %~nx1 syntax for DOS 6.22 compatibility
REM Last modified: 2026-01-20
REM Version: 1.4 - DOS 6.22 compatible (removed CALL :label subroutines)
REM Last modified: 2026-01-21
REM ==================================================================
REM STEP 1: Verify machine name is set
REM ==================================================================
IF "%MACHINE%"=="" GOTO NO_MACHINE
IF NOT "%MACHINE%"=="" GOTO CHECK_DRIVE
:NO_MACHINE
ECHO.
ECHO [ERROR] MACHINE variable not set
ECHO.
ECHO Set MACHINE in AUTOEXEC.BAT:
ECHO SET MACHINE=TS-4R
ECHO.
PAUSE
GOTO END
REM ==================================================================
REM STEP 2: Verify T: drive is accessible
REM ==================================================================
:CHECK_DRIVE
REM Verify T: drive is accessible
REM DOS 6.22: Direct file test is most reliable
REM Verify T: drive
IF NOT EXIST T:\*.* GOTO NO_T_DRIVE
GOTO START_CHECK
:NO_T_DRIVE
C:
ECHO.
ECHO [ERROR] T: drive not available
ECHO.
ECHO Run: C:\STARTNET.BAT
ECHO.
PAUSE
GOTO END
REM ==================================================================
REM STEP 3: Display check banner
REM ==================================================================
:START_CHECK
ECHO.
ECHO ==============================================================
ECHO Update Check: %MACHINE%
ECHO ==============================================================
ECHO.
REM Initialize flags (no counters - not critical for functionality)
REM Initialize flags
SET COMMON=
SET MACHINEFILES=
SET SYSFILE=
REM ==================================================================
REM STEP 4: Check COMMON batch files
REM ==================================================================
REM Check COMMON batch files
ECHO (1/3) Checking T:\COMMON\ProdSW for batch file updates...
ECHO [1/3] Checking T:\COMMON\ProdSW for batch file updates...
IF NOT EXIST T:\COMMON\ProdSW\*.* GOTO NO_COMMON
IF NOT EXIST T:\COMMON\ProdSW\NUL GOTO NO_COMMON
REM Check for files on network
FOR %%F IN (T:\COMMON\ProdSW\*.BAT) DO CALL :CHECK_COMMON_FILE %%F
IF "%COMMON%"=="" ECHO [OK] No updates in COMMON
IF NOT "%COMMON%"=="" ECHO [FOUND] Updates available in COMMON
IF EXIST T:\COMMON\ProdSW\*.BAT SET COMMON=FOUND
IF "%COMMON%"=="" ECHO No updates in COMMON
IF NOT "%COMMON%"=="" ECHO Updates available in COMMON
ECHO.
GOTO CHECK_MACHINE
:NO_COMMON
ECHO [SKIP] T:\COMMON\ProdSW not found
ECHO T:\COMMON\ProdSW not found
ECHO.
REM ==================================================================
REM STEP 5: Check machine-specific files
REM ==================================================================
:CHECK_MACHINE
ECHO [2/3] Checking T:\%MACHINE%\ProdSW for machine-specific updates...
ECHO (2/3) Checking T:\%MACHINE%\ProdSW for machine-specific updates...
IF NOT EXIST T:\%MACHINE%\ProdSW\NUL GOTO NO_MACHINE_DIR
IF NOT EXIST T:\%MACHINE%\ProdSW\*.* GOTO NO_MACHINE_DIR
REM Check for any files (BAT, EXE, DAT)
FOR %%F IN (T:\%MACHINE%\ProdSW\*.*) DO CALL :COUNT_FILE
IF "%MACHINEFILES%"=="" ECHO [OK] No updates for %MACHINE%
IF NOT "%MACHINEFILES%"=="" ECHO [FOUND] Updates available for %MACHINE%
IF EXIST T:\%MACHINE%\ProdSW\*.* SET MACHINEFILES=FOUND
IF "%MACHINEFILES%"=="" ECHO No updates for %MACHINE%
IF NOT "%MACHINEFILES%"=="" ECHO Updates available for %MACHINE%
ECHO.
GOTO CHECK_SYSTEM
:NO_MACHINE_DIR
ECHO [SKIP] T:\%MACHINE%\ProdSW not found
ECHO T:\%MACHINE%\ProdSW not found
ECHO.
REM ==================================================================
REM STEP 6: Check system file updates
REM ==================================================================
:CHECK_SYSTEM
ECHO [3/3] Checking T:\COMMON\DOS for system file updates...
ECHO (3/3) Checking T:\COMMON\DOS for system file updates...
IF NOT EXIST T:\COMMON\DOS\NUL GOTO NO_DOS_DIR
IF NOT EXIST T:\COMMON\DOS\*.* GOTO NO_DOS_DIR
REM Check for .NEW files
IF EXIST T:\COMMON\DOS\AUTOEXEC.NEW SET SYSFILE=FOUND
IF EXIST T:\COMMON\DOS\AUTOEXEC.NEW ECHO [FOUND] AUTOEXEC.NEW (system reboot required)
IF EXIST T:\COMMON\DOS\AUTOEXEC.NEW ECHO AUTOEXEC.NEW found (reboot required)
IF EXIST T:\COMMON\DOS\CONFIG.NEW SET SYSFILE=FOUND
IF EXIST T:\COMMON\DOS\CONFIG.NEW ECHO [FOUND] CONFIG.NEW (system reboot required)
IF EXIST T:\COMMON\DOS\CONFIG.NEW ECHO CONFIG.NEW found (reboot required)
IF "%SYSFILE%"=="" ECHO [OK] No system file updates
IF "%SYSFILE%"=="" ECHO No system file updates
ECHO.
GOTO SHOW_SUMMARY
:NO_DOS_DIR
ECHO [SKIP] T:\COMMON\DOS not found
ECHO T:\COMMON\DOS not found
ECHO.
REM ==================================================================
REM STEP 7: Show summary and recommendations
REM ==================================================================
:SHOW_SUMMARY
REM Determine if any updates found
SET HASUPDATES=
IF NOT "%COMMON%"=="" SET HASUPDATES=YES
IF NOT "%MACHINEFILES%"=="" SET HASUPDATES=YES
@@ -147,59 +81,46 @@ ECHO ==============================================================
ECHO Update Summary
ECHO ==============================================================
ECHO.
ECHO Available updates:
IF NOT "%COMMON%"=="" ECHO [FOUND] Common batch files
IF "%COMMON%"=="" ECHO [OK] Common batch files
IF NOT "%MACHINEFILES%"=="" ECHO [FOUND] Machine-specific files
IF "%MACHINEFILES%"=="" ECHO [OK] Machine-specific files
IF NOT "%SYSFILE%"=="" ECHO [FOUND] System files
IF "%SYSFILE%"=="" ECHO [OK] System files
IF NOT "%COMMON%"=="" ECHO FOUND: Common batch files
IF "%COMMON%"=="" ECHO OK: Common batch files
IF NOT "%MACHINEFILES%"=="" ECHO FOUND: Machine-specific files
IF "%MACHINEFILES%"=="" ECHO OK: Machine-specific files
IF NOT "%SYSFILE%"=="" ECHO FOUND: System files
IF "%SYSFILE%"=="" ECHO OK: System files
ECHO.
REM Provide recommendation
IF "%HASUPDATES%"=="" GOTO NO_UPDATES_AVAILABLE
ECHO Recommendation:
ECHO Run NWTOC to download and install updates
ECHO Recommendation: Run NWTOC to install updates
ECHO.
IF NOT "%SYSFILE%"=="" ECHO [WARNING] System file updates will require reboot
IF NOT "%SYSFILE%"=="" ECHO WARNING: System file updates require reboot
IF NOT "%SYSFILE%"=="" ECHO.
GOTO END
GOTO CLEANUP
:NO_UPDATES_AVAILABLE
ECHO Status: All files are up to date
ECHO.
GOTO CLEANUP
GOTO END
:NO_MACHINE
ECHO.
ECHO ERROR: MACHINE variable not set
ECHO Set MACHINE in AUTOEXEC.BAT: SET MACHINE=TS-4R
ECHO.
PAUSE
GOTO CLEANUP
REM ==================================================================
REM HELPER SUBROUTINES
REM ==================================================================
:NO_T_DRIVE
ECHO.
ECHO ERROR: T: drive not available
ECHO Run: C:\STARTNET.BAT
ECHO.
PAUSE
GOTO CLEANUP
:CHECK_COMMON_FILE
REM Flag that network files exist (DOS 6.22 cannot extract filename from path)
REM Simply mark updates as available if any network file is found
SET COMMON=FOUND
GOTO END_SUBROUTINE
:COUNT_FILE
REM Flag that machine-specific files exist
SET MACHINEFILES=FOUND
GOTO END_SUBROUTINE
:END_SUBROUTINE
REM Return point for all subroutines (replaces :EOF)
REM ==================================================================
REM CLEANUP AND EXIT
REM ==================================================================
:END
REM Clean up environment variables
:CLEANUP
SET COMMON=
SET MACHINEFILES=
SET SYSFILE=
SET HASUPDATES=
SET NETFILE=
SET FILENAME=

View File

@@ -1,10 +1,7 @@
@ECHO OFF
REM Computer to Network - Upload local test results to network
REM Version: 3.1 - Added logging, machine verification
REM Version: 3.2 - DOS 6.22 compatible
REM Last modified: 2026-01-21
REM
REM IMPORTANT: Test results go to T:\%MACHINE%\LOGS\*LOG (machine-specific)
REM This prevents overwriting data from other machines
REM Verify MACHINE variable is set
IF "%MACHINE%"=="" GOTO NO_MACHINE
@@ -15,20 +12,11 @@ IF NOT EXIST T:\*.* GOTO NO_DRIVE
REM Verify machine folder exists
IF NOT EXIST T:\%MACHINE%\*.* GOTO NO_FOLDER
REM Start logging
ECHO CTONW.BAT v3.1 > C:\ATE\CTONW.LOG
ECHO ........................................
ECHO Archiving datalog files to network...
ECHO CTONW.BAT v3.2 > C:\ATE\CTONW.LOG
ECHO Machine: %MACHINE% >> C:\ATE\CTONW.LOG
ECHO Date: %DATE% %TIME% >> C:\ATE\CTONW.LOG
ECHO Target: T:\%MACHINE%\LOGS >> C:\ATE\CTONW.LOG
ECHO. >> C:\ATE\CTONW.LOG
REM Display banner
ECHO.
ECHO ==============================================================
ECHO Upload Test Results: %MACHINE%
ECHO Destination: T:\%MACHINE%\LOGS
ECHO ==============================================================
ECHO.
ECHO Copying from C:\ATE\ to T:\%MACHINE%\LOGS\ >> C:\ATE\CTONW.LOG
REM Check for ATE directory
IF NOT EXIST C:\ATE\*.* GOTO SKIP_ATE
@@ -44,78 +32,50 @@ IF NOT EXIST T:\%MACHINE%\LOGS\PWRLOG\*.* MD T:\%MACHINE%\LOGS\PWRLOG
IF NOT EXIST T:\%MACHINE%\LOGS\SCTLOG\*.* MD T:\%MACHINE%\LOGS\SCTLOG
IF NOT EXIST T:\%MACHINE%\LOGS\VASLOG\*.* MD T:\%MACHINE%\LOGS\VASLOG
ECHO [1/4] Uploading test logs...
ECHO [1/4] Test logs: >> C:\ATE\CTONW.LOG
IF EXIST C:\ATE\5BLOG\*.* COPY C:\ATE\5BLOG\*.* T:\%MACHINE%\LOGS\5BLOG >> C:\ATE\CTONW.LOG
IF EXIST C:\ATE\7BLOG\*.* COPY C:\ATE\7BLOG\*.* T:\%MACHINE%\LOGS\7BLOG >> C:\ATE\CTONW.LOG
IF EXIST C:\ATE\8BLOG\*.* COPY C:\ATE\8BLOG\*.* T:\%MACHINE%\LOGS\8BLOG >> C:\ATE\CTONW.LOG
IF EXIST C:\ATE\DSCLOG\*.* COPY C:\ATE\DSCLOG\*.* T:\%MACHINE%\LOGS\DSCLOG >> C:\ATE\CTONW.LOG
IF EXIST C:\ATE\HVLOG\*.* COPY C:\ATE\HVLOG\*.* T:\%MACHINE%\LOGS\HVLOG >> C:\ATE\CTONW.LOG
IF EXIST C:\ATE\PWRLOG\*.* COPY C:\ATE\PWRLOG\*.* T:\%MACHINE%\LOGS\PWRLOG >> C:\ATE\CTONW.LOG
IF EXIST C:\ATE\SCTLOG\*.* COPY C:\ATE\SCTLOG\*.* T:\%MACHINE%\LOGS\SCTLOG >> C:\ATE\CTONW.LOG
IF EXIST C:\ATE\VASLOG\*.* COPY C:\ATE\VASLOG\*.* T:\%MACHINE%\LOGS\VASLOG >> C:\ATE\CTONW.LOG
ECHO Done
ECHO.
IF EXIST C:\ATE\5BLOG\*.DAT COPY C:\ATE\5BLOG\*.DAT T:\%MACHINE%\LOGS\5BLOG
IF EXIST C:\ATE\7BLOG\*.DAT COPY C:\ATE\7BLOG\*.DAT T:\%MACHINE%\LOGS\7BLOG
IF EXIST C:\ATE\7BLOG\*.SHT COPY C:\ATE\7BLOG\*.SHT T:\%MACHINE%\LOGS\7BLOG
IF EXIST C:\ATE\8BLOG\*.DAT COPY C:\ATE\8BLOG\*.DAT T:\%MACHINE%\LOGS\8BLOG
IF EXIST C:\ATE\DSCLOG\*.DAT COPY C:\ATE\DSCLOG\*.DAT T:\%MACHINE%\LOGS\DSCLOG
IF EXIST C:\ATE\HVLOG\*.DAT COPY C:\ATE\HVLOG\*.DAT T:\%MACHINE%\LOGS\HVLOG
IF EXIST C:\ATE\PWRLOG\*.DAT COPY C:\ATE\PWRLOG\*.DAT T:\%MACHINE%\LOGS\PWRLOG
IF EXIST C:\ATE\SCTLOG\*.DAT COPY C:\ATE\SCTLOG\*.DAT T:\%MACHINE%\LOGS\SCTLOG
IF EXIST C:\ATE\VASLOG\*.DAT COPY C:\ATE\VASLOG\*.DAT T:\%MACHINE%\LOGS\VASLOG
REM Ensure Reports directory exists
ECHO Archiving work-order report files to network...
IF NOT EXIST T:\%MACHINE%\Reports\*.* MD T:\%MACHINE%\Reports
IF EXIST C:\Reports\*.TXT COPY C:\Reports\*.TXT T:\%MACHINE%\Reports
ECHO [2/4] Uploading work-order reports...
ECHO [2/4] Reports: >> C:\ATE\CTONW.LOG
IF EXIST C:\Reports\*.txt COPY C:\Reports\*.txt T:\%MACHINE%\Reports >> C:\ATE\CTONW.LOG
ECHO Done
ECHO.
ECHO Archiving log file to network...
IF EXIST C:\ATE\*.LOG COPY C:\ATE\*.LOG T:\%MACHINE%
ECHO [3/4] Uploading batch files...
ECHO [3/4] Batch files: >> C:\ATE\CTONW.LOG
IF NOT EXIST T:\%MACHINE%\ProdSW\*.* MD T:\%MACHINE%\ProdSW
IF EXIST C:\BAT\*.BAT COPY C:\BAT\*.BAT T:\%MACHINE%\ProdSW >> C:\ATE\CTONW.LOG
ECHO Done
ECHO.
ECHO [4/4] Uploading log file...
ECHO [4/4] Log file: >> C:\ATE\CTONW.LOG
IF EXIST C:\ATE\*.LOG COPY C:\ATE\*.LOG T:\%MACHINE% >> C:\ATE\CTONW.LOG
ECHO Done
ECHO.
ECHO Complete >> C:\ATE\CTONW.LOG
GOTO DONE
ECHO Network archiving of datalog files done!
ECHO ........................................
GOTO END
:SKIP_ATE
ECHO [INFO] No C:\ATE directory - skipping
ECHO.
:DONE
ECHO ==============================================================
ECHO Upload Complete: %MACHINE%
ECHO ==============================================================
ECHO.
ECHO No C:\ATE directory - skipping
GOTO END
:NO_MACHINE
ECHO.
ECHO [ERROR] MACHINE variable not set
ECHO.
ECHO This prevents uploading to wrong folder.
ECHO Run DEPLOY.BAT or ATESYNC first.
ECHO.
ECHO ........................................
ECHO ERROR: MACHINE variable not set
ECHO Run DEPLOY.BAT or ATESYNC first
ECHO ........................................
PAUSE
GOTO END
:NO_DRIVE
ECHO [ERROR] T: drive not available
ECHO ERROR: T: drive not available
ECHO Run C:\STARTNET.BAT first
PAUSE
GOTO END
:NO_FOLDER
ECHO.
ECHO [ERROR] Machine folder T:\%MACHINE% not found
ECHO.
ECHO Run ATESYNC to create it, or check MACHINE variable.
ECHO Current MACHINE=%MACHINE%
ECHO.
ECHO ........................................
ECHO ERROR: Machine folder T:\%MACHINE% not found
ECHO Run ATESYNC to create it first
ECHO ........................................
PAUSE
GOTO END

View File

@@ -1,8 +1,8 @@
@ECHO OFF
REM DOSTEST.BAT - Test DOS batch file deployment
REM Run this on the DOS machine after deploying new files
REM Version: 1.1 - Fixed drive test for DOS 6.22 reliability
REM Last modified: 2026-01-20
REM Version: 1.2 - DOS 6.22 compatible (removed brackets, 2>NUL, NUL checks)
REM Last modified: 2026-01-21
ECHO.
ECHO ==============================================================
@@ -14,14 +14,14 @@ REM ==================================================================
REM TEST 1: Check MACHINE variable
REM ==================================================================
ECHO [TEST 1] Checking MACHINE variable...
ECHO (TEST 1) Checking MACHINE variable...
IF "%MACHINE%"=="" GOTO TEST1_FAIL
ECHO [OK] MACHINE=%MACHINE%
ECHO OK: MACHINE=%MACHINE%
GOTO TEST2
:TEST1_FAIL
ECHO [FAIL] MACHINE variable not set
ECHO FAIL: MACHINE variable not set
ECHO Fix: Add "SET MACHINE=TS-4R" to C:\AUTOEXEC.BAT
ECHO.
PAUSE
@@ -33,55 +33,39 @@ REM ==================================================================
:TEST2
ECHO.
ECHO [TEST 2] Checking required files...
ECHO (TEST 2) Checking required files...
IF NOT EXIST C:\AUTOEXEC.BAT ECHO [FAIL] C:\AUTOEXEC.BAT missing
IF EXIST C:\AUTOEXEC.BAT ECHO [OK] C:\AUTOEXEC.BAT exists
IF NOT EXIST C:\AUTOEXEC.BAT ECHO FAIL: C:\AUTOEXEC.BAT missing
IF EXIST C:\AUTOEXEC.BAT ECHO OK: C:\AUTOEXEC.BAT exists
IF NOT EXIST C:\STARTNET.BAT ECHO [FAIL] C:\STARTNET.BAT missing
IF EXIST C:\STARTNET.BAT ECHO [OK] C:\STARTNET.BAT exists
IF NOT EXIST C:\STARTNET.BAT ECHO FAIL: C:\STARTNET.BAT missing
IF EXIST C:\STARTNET.BAT ECHO OK: C:\STARTNET.BAT exists
IF NOT EXIST C:\BATCH\UPDATE.BAT ECHO [FAIL] C:\BATCH\UPDATE.BAT missing
IF EXIST C:\BATCH\UPDATE.BAT ECHO [OK] C:\BATCH\UPDATE.BAT exists
IF NOT EXIST C:\BATCH\NUL ECHO [WARN] C:\BATCH directory missing - run MD C:\BATCH
IF EXIST C:\BATCH\NUL ECHO [OK] C:\BATCH directory exists
IF NOT EXIST C:\BAT\*.* ECHO WARN: C:\BAT directory missing - run MD C:\BAT
IF EXIST C:\BAT\*.* ECHO OK: C:\BAT directory exists
REM ==================================================================
REM TEST 3: Check PATH variable
REM ==================================================================
ECHO.
ECHO [TEST 3] Checking PATH...
ECHO (TEST 3) Checking PATH...
ECHO PATH=%PATH%
REM Check if C:\BATCH is in PATH (simple check - look for BATCH string)
ECHO %PATH% | FIND /I "BATCH" > NUL
IF ERRORLEVEL 1 GOTO TEST3_FAIL
ECHO [OK] C:\BATCH is in PATH
GOTO TEST4
:TEST3_FAIL
ECHO [WARN] C:\BATCH not in PATH
ECHO Fix: Add "SET PATH=C:\DOS;C:\NET;C:\BATCH;C:\" to AUTOEXEC.BAT
GOTO TEST4
REM ==================================================================
REM TEST 4: Check T: drive
REM ==================================================================
:TEST4
ECHO.
ECHO [TEST 4] Checking T: drive...
ECHO (TEST 4) Checking T: drive...
REM DOS 6.22: Direct file test is most reliable
IF NOT EXIST T:\*.* GOTO TEST4_FAIL
ECHO [OK] T: drive accessible
ECHO OK: T: drive accessible
GOTO TEST5
:TEST4_FAIL
ECHO [FAIL] T: drive not accessible
ECHO FAIL: T: drive not accessible
ECHO Fix: Run C:\STARTNET.BAT to map network drives
GOTO TEST5
@@ -91,16 +75,15 @@ REM ==================================================================
:TEST5
ECHO.
ECHO [TEST 5] Checking X: drive...
ECHO (TEST 5) Checking X: drive...
REM DOS 6.22: Direct file test is most reliable
IF NOT EXIST X:\*.* GOTO TEST5_FAIL
ECHO [OK] X: drive accessible
ECHO OK: X: drive accessible
GOTO TEST6
:TEST5_FAIL
ECHO [FAIL] X: drive not accessible
ECHO FAIL: X: drive not accessible
ECHO Fix: Run C:\STARTNET.BAT to map network drives
GOTO TEST6
@@ -110,7 +93,7 @@ REM ==================================================================
:TEST6
ECHO.
ECHO [TEST 6] Checking backup directory creation...
ECHO (TEST 6) Checking backup directory creation...
IF "%MACHINE%"=="" GOTO TEST6_SKIP
@@ -118,28 +101,28 @@ REM Only test if T: is available
IF NOT EXIST T:\*.* GOTO TEST6_SKIP
REM Try to create machine directory
IF NOT EXIST T:\%MACHINE%\NUL MD T:\%MACHINE% 2>NUL
IF NOT EXIST T:\%MACHINE%\NUL GOTO TEST6_FAIL
IF NOT EXIST T:\%MACHINE%\*.* MD T:\%MACHINE%
IF NOT EXIST T:\%MACHINE%\*.* GOTO TEST6_FAIL
REM Try to create backup subdirectory
IF NOT EXIST T:\%MACHINE%\TEST\*.* MD T:\%MACHINE%\TEST 2>NUL
REM Try to create test subdirectory
IF NOT EXIST T:\%MACHINE%\TEST\*.* MD T:\%MACHINE%\TEST
IF NOT EXIST T:\%MACHINE%\TEST\*.* GOTO TEST6_FAIL
ECHO [OK] Can create T:\%MACHINE%\TEST
ECHO [OK] Backup directory structure works
ECHO OK: Can create T:\%MACHINE%\TEST
ECHO OK: Backup directory structure works
REM Clean up test directory
RD T:\%MACHINE%\TEST 2>NUL
RD T:\%MACHINE%\TEST
GOTO SUMMARY
:TEST6_FAIL
ECHO [FAIL] Cannot create directory on T: drive
ECHO FAIL: Cannot create directory on T: drive
ECHO Check: T: drive is writable
GOTO SUMMARY
:TEST6_SKIP
ECHO [SKIP] Cannot test (T: unavailable or MACHINE not set)
ECHO SKIP: Cannot test (T: unavailable or MACHINE not set)
GOTO SUMMARY
REM ==================================================================
@@ -153,14 +136,11 @@ ECHO Test Summary
ECHO ==============================================================
ECHO.
REM Count passes and fails would be complex in DOS batch
REM Just show overall status
IF "%MACHINE%"=="" GOTO SUMMARY_FAIL
IF NOT EXIST C:\BATCH\UPDATE.BAT GOTO SUMMARY_FAIL
IF NOT EXIST C:\BAT\*.* GOTO SUMMARY_FAIL
IF NOT EXIST T:\*.* GOTO SUMMARY_FAIL
ECHO [OK] All critical tests passed
ECHO OK: All critical tests passed
ECHO.
ECHO Configuration appears correct.
ECHO.
@@ -170,7 +150,7 @@ ECHO.
GOTO END
:SUMMARY_FAIL
ECHO [FAIL] One or more tests failed
ECHO FAIL: One or more tests failed
ECHO.
ECHO Please fix the failed tests before running UPDATE
ECHO.
@@ -178,7 +158,7 @@ ECHO Common fixes:
ECHO 1. Reboot machine (load AUTOEXEC.BAT changes)
ECHO 2. Run C:\STARTNET.BAT (map network drives)
ECHO 3. Check network cable is connected
ECHO 4. Create C:\BATCH directory: MD C:\BATCH
ECHO 4. Create C:\BAT directory: MD C:\BAT
ECHO.
:END

View File

@@ -6,8 +6,8 @@ REM
REM If machine-name not provided, uses MACHINE environment variable
REM from AUTOEXEC.BAT
REM
REM Version: 2.3 - Fixed XCOPY trailing backslash (DOS 6.22 compatibility)
REM Last modified: 2026-01-20
REM Version: 2.4 - DOS 6.22 compatible (removed brackets, fixed NUL checks)
REM Last modified: 2026-01-21
REM ==================================================================
REM STEP 1: Determine machine name
@@ -18,7 +18,7 @@ IF NOT "%MACHINE%"=="" GOTO USE_ENV
:NO_MACHINE
ECHO.
ECHO [ERROR] Machine name not specified
ECHO ERROR: Machine name not specified
ECHO.
ECHO Usage: UPDATE machine-name
ECHO Example: UPDATE TS-4R
@@ -47,12 +47,12 @@ ECHO Checking network drive T:...
REM DOS 6.22: Direct file test is most reliable
IF NOT EXIST T:\*.* GOTO NO_T_DRIVE
ECHO [OK] T: drive accessible
ECHO OK: T: drive accessible
GOTO START_BACKUP
:NO_T_DRIVE
ECHO.
ECHO [ERROR] T: drive not available
ECHO ERROR: T: drive not available
ECHO.
ECHO Network drive T: must be mapped to \\D2TESTNAS\test
ECHO.
@@ -79,15 +79,15 @@ ECHO Target: T:\%MACHINE%\BACKUP
ECHO.
REM Create machine directory if it doesn't exist
IF NOT EXIST T:\%MACHINE%\NUL MD T:\%MACHINE%
IF NOT EXIST T:\%MACHINE%\*.* MD T:\%MACHINE%
REM Create backup directory
IF NOT EXIST T:\%MACHINE%\BACKUP\NUL MD T:\%MACHINE%\BACKUP
IF NOT EXIST T:\%MACHINE%\BACKUP\*.* MD T:\%MACHINE%\BACKUP
REM Check if backup directory was created successfully
IF NOT EXIST T:\%MACHINE%\BACKUP\*.* GOTO BACKUP_DIR_ERROR
ECHO [OK] Backup directory ready
ECHO OK: Backup directory ready
ECHO.
REM ==================================================================
@@ -124,7 +124,7 @@ IF ERRORLEVEL 2 GOTO USER_ABORT
IF ERRORLEVEL 1 GOTO NO_FILES
ECHO.
ECHO [OK] Backup completed successfully
ECHO OK: Backup completed successfully
ECHO.
ECHO Files backed up to: T:\%MACHINE%\BACKUP
GOTO END
@@ -135,7 +135,7 @@ REM ==================================================================
:BACKUP_DIR_ERROR
ECHO.
ECHO [ERROR] Could not create backup directory
ECHO ERROR: Could not create backup directory
ECHO Target: T:\%MACHINE%\BACKUP
ECHO.
ECHO Check:
@@ -148,7 +148,7 @@ GOTO END
:DISK_ERROR
ECHO.
ECHO [ERROR] Disk write error
ECHO ERROR: Disk write error
ECHO.
ECHO Possible causes:
ECHO - Target drive is full
@@ -160,7 +160,7 @@ GOTO END
:INIT_ERROR
ECHO.
ECHO [ERROR] Backup initialization failed
ECHO ERROR: Backup initialization failed
ECHO.
ECHO Possible causes:
ECHO - Insufficient memory
@@ -172,7 +172,7 @@ GOTO END
:USER_ABORT
ECHO.
ECHO [WARNING] Backup terminated by user (Ctrl+C)
ECHO WARNING: Backup terminated by user (Ctrl+C)
ECHO.
ECHO Backup may be incomplete!
ECHO.
@@ -181,7 +181,7 @@ GOTO END
:NO_FILES
ECHO.
ECHO [WARNING] No files found to copy
ECHO WARNING: No files found to copy
ECHO.
ECHO This may indicate:
ECHO - All files are already up to date (/D option)