diff --git a/playbook/startnet.cmd b/playbook/startnet.cmd index 73e4ee4..79a083e 100644 --- a/playbook/startnet.cmd +++ b/playbook/startnet.cmd @@ -400,26 +400,30 @@ mkdir W:\Enrollment\shopfloor-setup 2>NUL copy /Y "Y:\shopfloor-setup\backup_lockdown.bat" "W:\Enrollment\shopfloor-setup\backup_lockdown.bat" if exist "Y:\shopfloor-setup\Shopfloor" ( mkdir W:\Enrollment\shopfloor-setup\Shopfloor 2>NUL - xcopy /E /Y /I "Y:\shopfloor-setup\Shopfloor" "W:\Enrollment\shopfloor-setup\Shopfloor\" + robocopy "Y:\shopfloor-setup\Shopfloor" "W:\Enrollment\shopfloor-setup\Shopfloor" /E /MT:16 /R:1 /W:1 /NFL /NDL + if errorlevel 8 echo WARNING: shopfloor-setup\Shopfloor robocopy exit %ERRORLEVEL% echo Copied Shopfloor baseline setup files. ) REM --- Always copy common/ (cross-PC-type GE-Enforce dispatcher + lib live here post-v2) --- if exist "Y:\shopfloor-setup\common" ( mkdir W:\Enrollment\shopfloor-setup\common 2>NUL - xcopy /E /Y /I "Y:\shopfloor-setup\common" "W:\Enrollment\shopfloor-setup\common\" + robocopy "Y:\shopfloor-setup\common" "W:\Enrollment\shopfloor-setup\common" /E /MT:16 /R:1 /W:1 /NFL /NDL + if errorlevel 8 echo WARNING: shopfloor-setup\common robocopy exit %ERRORLEVEL% echo Copied common setup files. ) REM --- Copy _ntlars-backups (147 per-bay .reg files restored by gea-shopfloor-{collections,nocollections}\03-RestoreEDncConfig.ps1) --- REM Same root level as common/, referenced by 03-RestoreEDncConfig.ps1 via Join-Path $PSScriptRoot '..\_ntlars-backups'. if exist "Y:\shopfloor-setup\_ntlars-backups" ( mkdir W:\Enrollment\shopfloor-setup\_ntlars-backups 2>NUL - xcopy /E /Y /I "Y:\shopfloor-setup\_ntlars-backups" "W:\Enrollment\shopfloor-setup\_ntlars-backups\" + robocopy "Y:\shopfloor-setup\_ntlars-backups" "W:\Enrollment\shopfloor-setup\_ntlars-backups" /E /MT:16 /R:1 /W:1 /NFL /NDL + if errorlevel 8 echo WARNING: _ntlars-backups robocopy exit %ERRORLEVEL% echo Copied _ntlars-backups. ) REM --- Copy type-specific scripts on top of baseline --- if exist "Y:\shopfloor-setup\%PCTYPE%" ( mkdir "W:\Enrollment\shopfloor-setup\%PCTYPE%" 2>NUL - xcopy /E /Y /I "Y:\shopfloor-setup\%PCTYPE%" "W:\Enrollment\shopfloor-setup\%PCTYPE%\" + robocopy "Y:\shopfloor-setup\%PCTYPE%" "W:\Enrollment\shopfloor-setup\%PCTYPE%" /E /MT:16 /R:1 /W:1 /NFL /NDL + if errorlevel 8 echo WARNING: shopfloor-setup\%PCTYPE% robocopy exit %ERRORLEVEL% echo Copied %PCTYPE% setup files. ) else ( echo WARNING: No setup files found for PC type %PCTYPE%. @@ -431,13 +435,15 @@ if exist "Y:\pre-install\preinstall.json" ( mkdir W:\PreInstall\installers 2>NUL copy /Y "Y:\pre-install\preinstall.json" "W:\PreInstall\preinstall.json" if exist "Y:\pre-install\installers" ( - xcopy /E /Y /I "Y:\pre-install\installers" "W:\PreInstall\installers\" + robocopy "Y:\pre-install\installers" "W:\PreInstall\installers" /E /MT:16 /R:1 /W:1 /NFL /NDL + if errorlevel 8 echo WARNING: pre-install\installers robocopy exit %ERRORLEVEL% echo Staged preinstall bundle to W:\PreInstall. ) else ( echo WARNING: Y:\pre-install\installers not found - preinstall.json staged without installers. ) if exist "Y:\pre-install\udc-backups" ( - xcopy /E /Y /I "Y:\pre-install\udc-backups" "W:\PreInstall\udc-backups\" + robocopy "Y:\pre-install\udc-backups" "W:\PreInstall\udc-backups" /E /MT:16 /R:1 /W:1 /NFL /NDL + if errorlevel 8 echo WARNING: pre-install\udc-backups robocopy exit %ERRORLEVEL% echo Staged UDC settings backups to W:\PreInstall\udc-backups. ) ) else ( @@ -454,7 +460,8 @@ REM unified GE-Enforce dispatcher takes over from the share for ongoing updates. if /i not "%PCTYPE%"=="gea-shopfloor-cmm" goto skip_cmm_stage if exist "Y:\installers-post\cmm\cmm-manifest.json" ( mkdir W:\CMM-Install 2>NUL - xcopy /E /Y /I "Y:\installers-post\cmm" "W:\CMM-Install\" + robocopy "Y:\installers-post\cmm" "W:\CMM-Install" /E /MT:16 /R:1 /W:1 /NFL /NDL + if errorlevel 8 echo WARNING: cmm robocopy exit %ERRORLEVEL% echo Staged CMM bootstrap to W:\CMM-Install. ) else ( echo WARNING: Y:\cmm-installers not found - CMM PC cannot install Hexagon apps at imaging time. @@ -474,7 +481,8 @@ if "%KEYENCEMODEL%"=="" goto skip_keyence_stage if exist "Y:\installers-post\keyence\%KEYENCEMODEL%\manifest.json" ( mkdir W:\KeyenceInstall 2>NUL mkdir W:\KeyenceInstall\%KEYENCEMODEL% 2>NUL - xcopy /E /Y /I "Y:\installers-post\keyence\%KEYENCEMODEL%" "W:\KeyenceInstall\%KEYENCEMODEL%\" + robocopy "Y:\installers-post\keyence\%KEYENCEMODEL%" "W:\KeyenceInstall\%KEYENCEMODEL%" /E /MT:16 /R:1 /W:1 /NFL /NDL + if errorlevel 8 echo WARNING: keyence\%KEYENCEMODEL% robocopy exit %ERRORLEVEL% echo Staged Keyence %KEYENCEMODEL% bootstrap to W:\KeyenceInstall\%KEYENCEMODEL%\. ) else ( echo WARNING: Y:\installers-post\keyence\%KEYENCEMODEL% not found - Keyence %KEYENCEMODEL% cannot install at imaging time. @@ -483,11 +491,12 @@ if exist "Y:\installers-post\keyence\%KEYENCEMODEL%\manifest.json" ( REM --- Stage WaxTrace bootstrap bundle (wax/trace gea-shopfloor-waxtrace only) --- REM Three-step process: -REM 1. xcopy installers-post\waxtrace -> W:\WaxTrace-Install (everything -REM EXCEPT the formtracepak\ subdir which carries all 7 version ISOs) +REM 1. robocopy installers-post\waxtrace -> W:\WaxTrace-Install (everything +REM EXCEPT the formtracepak\ subdir, via /XD - that subdir carries all +REM 7 vendor ISOs and we only need one of them) REM 2. resolve-bay-config.ps1: reads bay-config.csv + asset_tag, writes REM W:\Enrollment\waxtrace\{version,model,userid}.txt for 09-Setup to read -REM 3. xcopy ONLY the bay's matching FORMTRACEPAK-V.iso from +REM 3. robocopy ONLY the bay's matching FORMTRACEPAK-V.iso from REM Y:\installers-post\waxtrace\formtracepak\ onto the target disk REM (so 09-Setup-WaxAndTrace.ps1 mounts the right version per bay) if /i not "%PCTYPE%"=="gea-shopfloor-waxtrace" goto skip_waxtrace_stage @@ -510,8 +519,8 @@ if not "%MACHINENUM%"=="" ( ) else ( echo WARNING: no MACHINENUM set - skipping bay-config resolve. 09-Setup-WaxAndTrace will abort cleanly with no version. ) -REM Read the resolved version + xcopy ONLY that FTPak ISO (avoids dumping 12 GB -REM of ISOs on the bay disk; only the matched ~2 GB ISO lands locally). +REM Read the resolved version + robocopy ONLY that FTPak ISO (avoids dumping +REM 12 GB of ISOs on the bay disk; only the matched ~2 GB ISO lands locally). set WTVER= if exist W:\Enrollment\waxtrace\version.txt set /p WTVER=.zip. sync-waxtrace.sh -REM stages one ZIP per asset under installers-post\waxtrace\backups\ named -REM .zip. 09-Setup-WaxAndTrace.ps1 reads it post-vendor-MSI and runs -REM Install-FormtracepakSettings.ps1 -RestoreData -RestoreConfig. -mkdir W:\WaxTrace-Install\backup 2>NUL +REM Per-asset backup ZIPs land at W:\WaxTrace-Install\backups\.zip +REM as part of the robocopy bundle above (backups\ is not in the /XD list). +REM 09-Setup-WaxAndTrace.ps1 Step 3b reads C:\WaxTrace-Install\backups\ +REM .zip post-vendor-MSI and runs Install-FormtracepakSettings.ps1 +REM -RestoreData -RestoreConfig. Total ~17 MB on disk for the whole set, no +REM cherry-pick needed. if not "%MACHINENUM%"=="" ( - if exist "Y:\installers-post\waxtrace\backups\%MACHINENUM%.zip" ( - xcopy /Y "Y:\installers-post\waxtrace\backups\%MACHINENUM%.zip" "W:\WaxTrace-Install\backup\" - echo Staged per-asset backup %MACHINENUM%.zip for restore. + if exist "W:\WaxTrace-Install\backups\%MACHINENUM%.zip" ( + echo Backup ZIP %MACHINENUM%.zip is in the bundle - 09-Setup Step 3b will restore. ) else ( - echo INFO: No backup ZIP for %MACHINENUM% on share - 09-Setup will skip the restore step. + echo INFO: No backup ZIP for %MACHINENUM% in W:\WaxTrace-Install\backups - 09-Setup will skip the restore step. ) ) goto skip_waxtrace_stage