fix: Remove XCOPY /Q switch from all batch files
Issue: DOS 6.22 does not support XCOPY /Q (quiet mode) switch, causing "Invalid switch - /Q" error during DEPLOY.BAT execution. Changes: - Removed /Q switch from 40 XCOPY commands across 8 BAT files - Updated check-dos-compatibility.ps1 to detect XCOPY /Q usage - Created fix-xcopy-q-switch.ps1 automated fix script Files modified: - DEPLOY.BAT: 5 XCOPY commands fixed - UPDATE.BAT: 2 XCOPY commands fixed - CTONW.BAT: 11 XCOPY commands fixed - NWTOC.BAT: 2 XCOPY commands fixed - DEPLOY_VERIFY.BAT, DEPLOY_TEST.BAT, DEPLOY_FROM_NAS.BAT, DEPLOY_FROM_AD2.BAT: Test/verification copies updated DOS 6.22 XCOPY valid switches: /Y /S /E /D /H /K /C Invalid switches: /Q (quiet mode) Deployed to: - D2TESTNAS: /data/test/*.BAT (via scp -O) - AD2: C:/scripts/sync-copies/bat-files/*.BAT Testing: DOS machine error "Invalid switch - /Q" resolved Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
22
CTONW.BAT
22
CTONW.BAT
@@ -190,7 +190,7 @@ FOR %%F IN (%TARGETDIR%\*.BAT) DO COPY %%F %%~dpnF.BAK >NUL 2>NUL
|
||||
|
||||
REM Copy batch files to network
|
||||
ECHO Copying files to %TARGETDIR%...
|
||||
XCOPY C:\BAT\*.BAT %TARGETDIR%\ /Y /Q
|
||||
XCOPY C:\BAT\*.BAT %TARGETDIR%\ /Y
|
||||
IF ERRORLEVEL 4 GOTO UPLOAD_ERROR_INIT
|
||||
IF ERRORLEVEL 2 GOTO UPLOAD_ERROR_USER
|
||||
IF ERRORLEVEL 1 ECHO [WARNING] No batch files found in C:\BAT
|
||||
@@ -212,10 +212,10 @@ IF NOT EXIST C:\ATE\NUL GOTO NO_ATE_DIR
|
||||
|
||||
REM Copy programs (.EXE, .BAT, .CFG, etc.) - exclude DAT files
|
||||
ECHO Copying programs to %TARGETDIR%...
|
||||
XCOPY C:\ATE\*.EXE %TARGETDIR%\ /S /Y /Q >NUL 2>NUL
|
||||
XCOPY C:\ATE\*.BAT %TARGETDIR%\ /S /Y /Q >NUL 2>NUL
|
||||
XCOPY C:\ATE\*.CFG %TARGETDIR%\ /S /Y /Q >NUL 2>NUL
|
||||
XCOPY C:\ATE\*.TXT %TARGETDIR%\ /S /Y /Q >NUL 2>NUL
|
||||
XCOPY C:\ATE\*.EXE %TARGETDIR%\ /S /Y >NUL 2>NUL
|
||||
XCOPY C:\ATE\*.BAT %TARGETDIR%\ /S /Y >NUL 2>NUL
|
||||
XCOPY C:\ATE\*.CFG %TARGETDIR%\ /S /Y >NUL 2>NUL
|
||||
XCOPY C:\ATE\*.TXT %TARGETDIR%\ /S /Y >NUL 2>NUL
|
||||
ECHO [OK] Programs uploaded to ProdSW
|
||||
|
||||
ECHO.
|
||||
@@ -250,22 +250,22 @@ REM Upload test data files to appropriate log folders
|
||||
ECHO Uploading test data files...
|
||||
|
||||
REM 8-channel data: 8BDATA -> 8BLOG
|
||||
IF EXIST C:\ATE\8BDATA\NUL XCOPY C:\ATE\8BDATA\*.DAT %LOGSDIR%\8BLOG\ /Y /Q >NUL 2>NUL
|
||||
IF EXIST C:\ATE\8BDATA\NUL XCOPY C:\ATE\8BDATA\*.DAT %LOGSDIR%\8BLOG\ /Y >NUL 2>NUL
|
||||
|
||||
REM DSC data: DSCDATA -> DSCLOG
|
||||
IF EXIST C:\ATE\DSCDATA\NUL XCOPY C:\ATE\DSCDATA\*.DAT %LOGSDIR%\DSCLOG\ /Y /Q >NUL 2>NUL
|
||||
IF EXIST C:\ATE\DSCDATA\NUL XCOPY C:\ATE\DSCDATA\*.DAT %LOGSDIR%\DSCLOG\ /Y >NUL 2>NUL
|
||||
|
||||
REM HV data: HVDATA -> HVLOG
|
||||
IF EXIST C:\ATE\HVDATA\NUL XCOPY C:\ATE\HVDATA\*.DAT %LOGSDIR%\HVLOG\ /Y /Q >NUL 2>NUL
|
||||
IF EXIST C:\ATE\HVDATA\NUL XCOPY C:\ATE\HVDATA\*.DAT %LOGSDIR%\HVLOG\ /Y >NUL 2>NUL
|
||||
|
||||
REM Power data: PWRDATA -> PWRLOG
|
||||
IF EXIST C:\ATE\PWRDATA\NUL XCOPY C:\ATE\PWRDATA\*.DAT %LOGSDIR%\PWRLOG\ /Y /Q >NUL 2>NUL
|
||||
IF EXIST C:\ATE\PWRDATA\NUL XCOPY C:\ATE\PWRDATA\*.DAT %LOGSDIR%\PWRLOG\ /Y >NUL 2>NUL
|
||||
|
||||
REM RMS data: RMSDATA -> RMSLOG
|
||||
IF EXIST C:\ATE\RMSDATA\*.* XCOPY C:\ATE\RMSDATA\*.DAT %LOGSDIR%\RMSLOG\ /Y /Q >NUL 2>NUL
|
||||
IF EXIST C:\ATE\RMSDATA\*.* XCOPY C:\ATE\RMSDATA\*.DAT %LOGSDIR%\RMSLOG\ /Y >NUL 2>NUL
|
||||
|
||||
REM 7-channel data: 7BDATA -> 7BLOG
|
||||
IF EXIST C:\ATE\7BDATA\*.* XCOPY C:\ATE\7BDATA\*.DAT %LOGSDIR%\7BLOG\ /Y /Q >NUL 2>NUL
|
||||
IF EXIST C:\ATE\7BDATA\*.* XCOPY C:\ATE\7BDATA\*.DAT %LOGSDIR%\7BLOG\ /Y >NUL 2>NUL
|
||||
|
||||
ECHO [OK] Test data uploaded to LOGS (for database import)
|
||||
|
||||
|
||||
10
DEPLOY.BAT
10
DEPLOY.BAT
@@ -178,23 +178,23 @@ IF NOT EXIST C:\BAT\*.* GOTO BAT_DIR_ERROR
|
||||
ECHO Copying update system files to C:\BAT\...
|
||||
|
||||
REM Copy batch files from network to local machine
|
||||
XCOPY T:\COMMON\ProdSW\NWTOC.BAT C:\BAT\ /Y /Q
|
||||
XCOPY T:\COMMON\ProdSW\NWTOC.BAT C:\BAT\ /Y
|
||||
IF ERRORLEVEL 4 GOTO COPY_ERROR
|
||||
ECHO [OK] NWTOC.BAT
|
||||
|
||||
XCOPY T:\COMMON\ProdSW\CTONW.BAT C:\BAT\ /Y /Q
|
||||
XCOPY T:\COMMON\ProdSW\CTONW.BAT C:\BAT\ /Y
|
||||
IF ERRORLEVEL 4 GOTO COPY_ERROR
|
||||
ECHO [OK] CTONW.BAT
|
||||
|
||||
XCOPY T:\COMMON\ProdSW\UPDATE.BAT C:\BAT\ /Y /Q
|
||||
XCOPY T:\COMMON\ProdSW\UPDATE.BAT C:\BAT\ /Y
|
||||
IF ERRORLEVEL 4 GOTO COPY_ERROR
|
||||
ECHO [OK] UPDATE.BAT
|
||||
|
||||
XCOPY T:\COMMON\ProdSW\STAGE.BAT C:\BAT\ /Y /Q
|
||||
XCOPY T:\COMMON\ProdSW\STAGE.BAT C:\BAT\ /Y
|
||||
IF ERRORLEVEL 4 GOTO COPY_ERROR
|
||||
ECHO [OK] STAGE.BAT
|
||||
|
||||
XCOPY T:\COMMON\ProdSW\CHECKUPD.BAT C:\BAT\ /Y /Q
|
||||
XCOPY T:\COMMON\ProdSW\CHECKUPD.BAT C:\BAT\ /Y
|
||||
IF ERRORLEVEL 4 GOTO COPY_ERROR
|
||||
ECHO [OK] CHECKUPD.BAT
|
||||
|
||||
|
||||
@@ -178,23 +178,23 @@ IF NOT EXIST C:\BAT\NUL GOTO BAT_DIR_ERROR
|
||||
ECHO Copying update system files to C:\BAT\...
|
||||
|
||||
REM Copy batch files from network to local machine
|
||||
XCOPY T:\COMMON\ProdSW\NWTOC.BAT C:\BAT\ /Y /Q
|
||||
XCOPY T:\COMMON\ProdSW\NWTOC.BAT C:\BAT\ /Y
|
||||
IF ERRORLEVEL 4 GOTO COPY_ERROR
|
||||
ECHO [OK] NWTOC.BAT
|
||||
|
||||
XCOPY T:\COMMON\ProdSW\CTONW.BAT C:\BAT\ /Y /Q
|
||||
XCOPY T:\COMMON\ProdSW\CTONW.BAT C:\BAT\ /Y
|
||||
IF ERRORLEVEL 4 GOTO COPY_ERROR
|
||||
ECHO [OK] CTONW.BAT
|
||||
|
||||
XCOPY T:\COMMON\ProdSW\UPDATE.BAT C:\BAT\ /Y /Q
|
||||
XCOPY T:\COMMON\ProdSW\UPDATE.BAT C:\BAT\ /Y
|
||||
IF ERRORLEVEL 4 GOTO COPY_ERROR
|
||||
ECHO [OK] UPDATE.BAT
|
||||
|
||||
XCOPY T:\COMMON\ProdSW\STAGE.BAT C:\BAT\ /Y /Q
|
||||
XCOPY T:\COMMON\ProdSW\STAGE.BAT C:\BAT\ /Y
|
||||
IF ERRORLEVEL 4 GOTO COPY_ERROR
|
||||
ECHO [OK] STAGE.BAT
|
||||
|
||||
XCOPY T:\COMMON\ProdSW\CHECKUPD.BAT C:\BAT\ /Y /Q
|
||||
XCOPY T:\COMMON\ProdSW\CHECKUPD.BAT C:\BAT\ /Y
|
||||
IF ERRORLEVEL 4 GOTO COPY_ERROR
|
||||
ECHO [OK] CHECKUPD.BAT
|
||||
|
||||
|
||||
@@ -178,23 +178,23 @@ IF NOT EXIST C:\BAT\NUL GOTO BAT_DIR_ERROR
|
||||
ECHO Copying update system files to C:\BAT\...
|
||||
|
||||
REM Copy batch files from network to local machine
|
||||
XCOPY T:\COMMON\ProdSW\NWTOC.BAT C:\BAT\ /Y /Q
|
||||
XCOPY T:\COMMON\ProdSW\NWTOC.BAT C:\BAT\ /Y
|
||||
IF ERRORLEVEL 4 GOTO COPY_ERROR
|
||||
ECHO [OK] NWTOC.BAT
|
||||
|
||||
XCOPY T:\COMMON\ProdSW\CTONW.BAT C:\BAT\ /Y /Q
|
||||
XCOPY T:\COMMON\ProdSW\CTONW.BAT C:\BAT\ /Y
|
||||
IF ERRORLEVEL 4 GOTO COPY_ERROR
|
||||
ECHO [OK] CTONW.BAT
|
||||
|
||||
XCOPY T:\COMMON\ProdSW\UPDATE.BAT C:\BAT\ /Y /Q
|
||||
XCOPY T:\COMMON\ProdSW\UPDATE.BAT C:\BAT\ /Y
|
||||
IF ERRORLEVEL 4 GOTO COPY_ERROR
|
||||
ECHO [OK] UPDATE.BAT
|
||||
|
||||
XCOPY T:\COMMON\ProdSW\STAGE.BAT C:\BAT\ /Y /Q
|
||||
XCOPY T:\COMMON\ProdSW\STAGE.BAT C:\BAT\ /Y
|
||||
IF ERRORLEVEL 4 GOTO COPY_ERROR
|
||||
ECHO [OK] STAGE.BAT
|
||||
|
||||
XCOPY T:\COMMON\ProdSW\CHECKUPD.BAT C:\BAT\ /Y /Q
|
||||
XCOPY T:\COMMON\ProdSW\CHECKUPD.BAT C:\BAT\ /Y
|
||||
IF ERRORLEVEL 4 GOTO COPY_ERROR
|
||||
ECHO [OK] CHECKUPD.BAT
|
||||
|
||||
|
||||
@@ -178,23 +178,23 @@ IF NOT EXIST C:\BAT\NUL GOTO BAT_DIR_ERROR
|
||||
ECHO Copying update system files to C:\BAT\...
|
||||
|
||||
REM Copy batch files from network to local machine
|
||||
XCOPY T:\COMMON\ProdSW\NWTOC.BAT C:\BAT\ /Y /Q
|
||||
XCOPY T:\COMMON\ProdSW\NWTOC.BAT C:\BAT\ /Y
|
||||
IF ERRORLEVEL 4 GOTO COPY_ERROR
|
||||
ECHO [OK] NWTOC.BAT
|
||||
|
||||
XCOPY T:\COMMON\ProdSW\CTONW.BAT C:\BAT\ /Y /Q
|
||||
XCOPY T:\COMMON\ProdSW\CTONW.BAT C:\BAT\ /Y
|
||||
IF ERRORLEVEL 4 GOTO COPY_ERROR
|
||||
ECHO [OK] CTONW.BAT
|
||||
|
||||
XCOPY T:\COMMON\ProdSW\UPDATE.BAT C:\BAT\ /Y /Q
|
||||
XCOPY T:\COMMON\ProdSW\UPDATE.BAT C:\BAT\ /Y
|
||||
IF ERRORLEVEL 4 GOTO COPY_ERROR
|
||||
ECHO [OK] UPDATE.BAT
|
||||
|
||||
XCOPY T:\COMMON\ProdSW\STAGE.BAT C:\BAT\ /Y /Q
|
||||
XCOPY T:\COMMON\ProdSW\STAGE.BAT C:\BAT\ /Y
|
||||
IF ERRORLEVEL 4 GOTO COPY_ERROR
|
||||
ECHO [OK] STAGE.BAT
|
||||
|
||||
XCOPY T:\COMMON\ProdSW\CHECKUPD.BAT C:\BAT\ /Y /Q
|
||||
XCOPY T:\COMMON\ProdSW\CHECKUPD.BAT C:\BAT\ /Y
|
||||
IF ERRORLEVEL 4 GOTO COPY_ERROR
|
||||
ECHO [OK] CHECKUPD.BAT
|
||||
|
||||
|
||||
@@ -178,23 +178,23 @@ IF NOT EXIST C:\BAT\NUL GOTO BAT_DIR_ERROR
|
||||
ECHO Copying update system files to C:\BAT\...
|
||||
|
||||
REM Copy batch files from network to local machine
|
||||
XCOPY T:\COMMON\ProdSW\NWTOC.BAT C:\BAT\ /Y /Q
|
||||
XCOPY T:\COMMON\ProdSW\NWTOC.BAT C:\BAT\ /Y
|
||||
IF ERRORLEVEL 4 GOTO COPY_ERROR
|
||||
ECHO [OK] NWTOC.BAT
|
||||
|
||||
XCOPY T:\COMMON\ProdSW\CTONW.BAT C:\BAT\ /Y /Q
|
||||
XCOPY T:\COMMON\ProdSW\CTONW.BAT C:\BAT\ /Y
|
||||
IF ERRORLEVEL 4 GOTO COPY_ERROR
|
||||
ECHO [OK] CTONW.BAT
|
||||
|
||||
XCOPY T:\COMMON\ProdSW\UPDATE.BAT C:\BAT\ /Y /Q
|
||||
XCOPY T:\COMMON\ProdSW\UPDATE.BAT C:\BAT\ /Y
|
||||
IF ERRORLEVEL 4 GOTO COPY_ERROR
|
||||
ECHO [OK] UPDATE.BAT
|
||||
|
||||
XCOPY T:\COMMON\ProdSW\STAGE.BAT C:\BAT\ /Y /Q
|
||||
XCOPY T:\COMMON\ProdSW\STAGE.BAT C:\BAT\ /Y
|
||||
IF ERRORLEVEL 4 GOTO COPY_ERROR
|
||||
ECHO [OK] STAGE.BAT
|
||||
|
||||
XCOPY T:\COMMON\ProdSW\CHECKUPD.BAT C:\BAT\ /Y /Q
|
||||
XCOPY T:\COMMON\ProdSW\CHECKUPD.BAT C:\BAT\ /Y
|
||||
IF ERRORLEVEL 4 GOTO COPY_ERROR
|
||||
ECHO [OK] CHECKUPD.BAT
|
||||
|
||||
|
||||
@@ -130,7 +130,7 @@ FOR %%F IN (C:\BAT\*.BAT) DO COPY %%F %%~dpnF.BAK >NUL 2>NUL
|
||||
|
||||
REM Copy newer batch files from COMMON
|
||||
ECHO Copying updated files...
|
||||
XCOPY T:\COMMON\ProdSW\*.bat C:\BAT\ /D /Y /Q
|
||||
XCOPY T:\COMMON\ProdSW\*.bat C:\BAT\ /D /Y
|
||||
IF ERRORLEVEL 4 GOTO UPDATE_ERROR_INIT
|
||||
IF ERRORLEVEL 2 GOTO UPDATE_ERROR_USER
|
||||
IF ERRORLEVEL 1 ECHO [OK] No new batch files in COMMON
|
||||
@@ -234,7 +234,7 @@ FOR %%F IN (C:\NET\*.DOS) DO COPY %%F %%~dpnF.BAK >NUL 2>NUL
|
||||
|
||||
REM Copy newer network files
|
||||
ECHO Copying updated network files...
|
||||
XCOPY T:\COMMON\NET\*.* C:\NET\ /D /Y /Q
|
||||
XCOPY T:\COMMON\NET\*.* C:\NET\ /D /Y
|
||||
IF NOT ERRORLEVEL 1 ECHO [OK] Network client files updated
|
||||
GOTO UPDATE_COMPLETE
|
||||
|
||||
|
||||
@@ -118,9 +118,9 @@ REM /D = Copy only files that are newer
|
||||
REM /H = Copy hidden and system files
|
||||
REM /K = Copy attributes
|
||||
REM /C = Continue on errors
|
||||
REM /Q = Quiet mode (don't show filenames)
|
||||
REM = Quiet mode (don't show filenames)
|
||||
|
||||
XCOPY C:\*.* T:\%MACHINE%\BACKUP /S /E /Y /D /H /K /C /Q
|
||||
XCOPY C:\*.* T:\%MACHINE%\BACKUP /S /E /Y /D /H /K /C
|
||||
|
||||
REM Check XCOPY error level
|
||||
REM 0 = Files copied OK
|
||||
|
||||
@@ -26,6 +26,7 @@ $IncompatiblePatterns = @(
|
||||
@{Pattern='&&'; Description='&& operator - NOT in DOS 6.22'},
|
||||
@{Pattern='\|\|'; Description='|| operator - NOT in DOS 6.22'},
|
||||
@{Pattern='\\NUL(?!\s|$)'; Description='\NUL as filename - INVALID (use \*.* for directory test)'},
|
||||
@{Pattern='XCOPY.*\/Q'; Description='XCOPY /Q (quiet mode) - NOT in DOS 6.22'},
|
||||
@{Pattern='CHOICE\s+/[A-Z]'; Description='CHOICE with options - Check if CHOICE.COM available'},
|
||||
@{Pattern='START\s+'; Description='START command - NOT in DOS 6.22'}
|
||||
)
|
||||
|
||||
62
fix-xcopy-q-switch.ps1
Normal file
62
fix-xcopy-q-switch.ps1
Normal file
@@ -0,0 +1,62 @@
|
||||
# Fix XCOPY /Q switch - not supported in DOS 6.22
|
||||
# Removes /Q switch from all XCOPY commands
|
||||
|
||||
$BATFiles = @(
|
||||
"DEPLOY.BAT",
|
||||
"UPDATE.BAT",
|
||||
"CTONW.BAT",
|
||||
"NWTOC.BAT",
|
||||
"DEPLOY_VERIFY.BAT",
|
||||
"DEPLOY_TEST.BAT",
|
||||
"DEPLOY_FROM_NAS.BAT",
|
||||
"DEPLOY_FROM_AD2.BAT"
|
||||
)
|
||||
|
||||
Write-Host "[INFO] Fixing XCOPY /Q switches (not in DOS 6.22)" -ForegroundColor Cyan
|
||||
Write-Host ""
|
||||
|
||||
$TotalFixed = 0
|
||||
|
||||
foreach ($File in $BATFiles) {
|
||||
$FilePath = "D:\ClaudeTools\$File"
|
||||
|
||||
if (-not (Test-Path $FilePath)) {
|
||||
Write-Host "[SKIP] $File - not found" -ForegroundColor Yellow
|
||||
continue
|
||||
}
|
||||
|
||||
Write-Host "Processing: $File" -ForegroundColor White
|
||||
|
||||
$Content = Get-Content $FilePath -Raw
|
||||
$OriginalContent = $Content
|
||||
|
||||
# Remove /Q switch from XCOPY commands
|
||||
# Pattern: XCOPY ... /Y /Q -> XCOPY ... /Y
|
||||
# Pattern: XCOPY ... /Q -> XCOPY ...
|
||||
$Content = $Content -replace '(\s+)\/Q(\s+)', '$1$2'
|
||||
$Content = $Content -replace '(\s+)\/Q(\r?\n)', '$1$2'
|
||||
|
||||
if ($Content -ne $OriginalContent) {
|
||||
$ChangeCount = ([regex]::Matches($OriginalContent, '/Q')).Count
|
||||
Set-Content $FilePath $Content -NoNewline
|
||||
Write-Host " [OK] Removed $ChangeCount /Q switches" -ForegroundColor Green
|
||||
$TotalFixed += $ChangeCount
|
||||
} else {
|
||||
Write-Host " [OK] No /Q switches found" -ForegroundColor Green
|
||||
}
|
||||
}
|
||||
|
||||
Write-Host ""
|
||||
Write-Host "[SUCCESS] Fixed $TotalFixed /Q switches across all files" -ForegroundColor Green
|
||||
Write-Host ""
|
||||
Write-Host "DOS 6.22 XCOPY switches (valid):" -ForegroundColor Cyan
|
||||
Write-Host " /Y Suppress prompts (OK)" -ForegroundColor White
|
||||
Write-Host " /S Copy subdirectories (OK)" -ForegroundColor White
|
||||
Write-Host " /E Copy empty subdirectories (OK)" -ForegroundColor White
|
||||
Write-Host " /D Only copy newer files (OK)" -ForegroundColor White
|
||||
Write-Host " /H Copy hidden files (OK)" -ForegroundColor White
|
||||
Write-Host " /K Copy attributes (OK)" -ForegroundColor White
|
||||
Write-Host " /C Continue on errors (OK)" -ForegroundColor White
|
||||
Write-Host ""
|
||||
Write-Host " /Q Quiet mode (NOT SUPPORTED)" -ForegroundColor Red
|
||||
Write-Host ""
|
||||
Reference in New Issue
Block a user