Watch at Ease看見世界,讀懂生活。

科技 · 實用指南

Robocopy 回傳代碼 1 但檔案已複製?修正 CI 邊界,不要誤判複製失敗

Robocopy 以 0–7 表示已完成結果,8 以上才代表至少一次複製失敗。先保留原始代碼與日誌,再在批次、PowerShell 或 Jenkins 邊界轉換。

原創編輯插畫:分類 Robocopy 0、1–7 與 8+ 的原創圖。
原創編輯插畫:原創圖:先保留原始結果,再轉換 CI 狀態。 Watch at Ease

Robocopy 回傳 1 代表所選檔案成功複製;Jenkins 等執行器卻會把任何非零狀態判成失敗。

應立刻保存原始值:低於 8 是完成狀態,8 以上失敗,並保留摘要與日誌。

先擷取原始結果

Robocopy 結束後立即讀取 %ERRORLEVEL% 或 $LASTEXITCODE;下一個外部命令可能覆寫它。

保留 copied、FAILED、Mismatch 與 Extras;代碼分類結果,日誌解釋細節。

正確區分 0–7 與 8+

0 是無需複製,1 是成功複製,2–7 是其他沒有複製失敗的完成組合。/MIR 仍需審查額外項。

使用 8 作為失敗門檻;不要把所有非零視為失敗,也不要用過窄的 0–3 規則。

在 cmd 與 PowerShell 轉換

批次先保存 rc;rc GEQ 8 時回傳原始失敗碼,否則向 CI 回傳 0。

PowerShell 先保存 $LASTEXITCODE 並寫入日誌;小於 8 回傳 0,否則回傳 rc。

在 Jenkins 保留失敗

Jenkins 的 Windows 步驟預設因非零失敗;returnStatus: true 讓 Pipeline 取得狀態。

低於 8 可讓步驟成功,但必須保留日誌;8 以上要失敗並顯示原值。

核驗複製與紀錄

核對來源、目的地、數量與代表檔案。/MIR 或 /PURGE 可刪除額外內容,非失敗不等於政策安全。

記錄命令、選項、原始代碼、CI 代碼和日誌;路徑或數量異常時停止。

原創編輯插畫:Robocopy 安全 CI 包裝器決策圖。
原創編輯插畫:原創圖:低於 8 成功,8 以上失敗並保留日誌。 Watch at Ease