先固定交付日期,再複製整個資料夾
要為一批交付檔案加日期,先決定日期代表什麼,再把整個資料夾複製成測試副本。十個設計檔應共用同一個「交付日」或「版次日」,不要讓每個檔案依執行瞬間、修改時間或建立時間各自產生不同前綴。原始資料夾保留不動,測試副本才是 PowerShell 的操作目標。
例如客戶在 2026 年 8 月 9 日收件,可把 logo-final.ai 規劃為 2026-08-09-logo-final.ai。如果實際交付日在明天,就應明確使用明天的字串,而不是因電腦今天顯示 8 月 9 日就直接套用。日期的來源要寫在交付紀錄中,收件人才能判斷它是交付日、審核日還是素材建立日。
在 Windows 檔案總管先複製資料夾,將副本命名為像 client-delivery-test 的清楚名稱。確認原資料夾與副本都能開啟,而且檔案數量一致,再進行下一步。同步中的 OneDrive 或網路共享資料夾可能同時被別人變更,不適合直接作為第一次試跑位置;先使用本機測試副本較容易界定回復責任。
先把命名規則寫成人看得懂的對照
日期格式以 yyyy-MM-dd 排在檔名前方,能讓同一專案的交付批次按字典順序排列。規則可寫成「固定日期 + 連字號 + 完整原檔名」,這樣副檔名與原有版本字樣都保留,例如 2026-08-09-homepage-v3.fig,而不是只留下難以追查的流水號。
若專案代號的英文大小寫不一致,可先把純文字代號貼到大小寫轉換工具,選定 kebab-case 或其他團隊規範,再把結果納入命名規則。這個 case-converter 頁面只轉換貼入的文字,不能讀取 Windows 資料夾,也不會替檔案備份或改名。中文名稱沒有大小寫,仍要人工確認空白、全形符號與收件平台限制。
在真正產生命令前,先挑三個邊界案例寫出預期對照:最長檔名、含中文或空白的檔名,以及已經有日期前綴的檔名。若規則會把 2026-08-09-logo.ai 變成 2026-08-09-2026-08-09-logo.ai,就應先移出該檔或縮小篩選條件,不能等改完才猜哪些檔案被重複處理。
在測試副本列出新名稱與碰撞結果
以下流程依 PowerShell 7.5 文件核對。Windows 11 若由 Windows Terminal 開啟 PowerShell,或介面入口不同,可從開始功能表搜尋 PowerShell,然後用 Set-Location -LiteralPath 'D:\client-delivery-test' 進入副本;路徑請換成實際測試資料夾。
若交付日就是電腦目前日期,可先輸入 $datePrefix = Get-Date -Format 'yyyy-MM-dd'。Microsoft Learn 說明 Get-Date -Format 會依指定的 .NET 格式輸出字串。若交付日由專案決定,改用明確值 $datePrefix = '2026-08-09',避免系統時鐘或跨時區造成批次名稱錯一天。
先執行只產生對照、不改名的檢查:Get-ChildItem -File | ForEach-Object { $newName = "$datePrefix-$($_.Name)"; [pscustomobject]@{ OldName = $_.Name; NewName = $newName; Exists = Test-Path -LiteralPath (Join-Path $_.DirectoryName $newName) } }。逐行查看 OldName、NewName 與 Exists;任何 Exists 為 True 都代表目標名稱已存在,應停下來處理碰撞,而不是嘗試覆蓋。
這份清單也能發現錯誤範圍。若資料夾含縮圖、暫存檔或不需交付的說明文件,應先把它們排除或移到另一個副本,再重新列出對照。命名規則的責任範圍必須先清楚,才適合進入改名預覽。
一定先跑 -WhatIf,確認後才在副本執行
正式預覽命令是 Get-ChildItem -File | ForEach-Object { Rename-Item -LiteralPath $_.FullName -NewName "$datePrefix-$($_.Name)" -WhatIf }。-WhatIf 會顯示預計執行的改名動作,但不會真的變更檔案。請核對第一個、中間一個與最後一個檔案,並確認副檔名、中文、空白及版本字樣仍完整。
Microsoft Learn 說明 Rename-Item 只變更名稱,不會變更檔案內容,也不能在新名稱中指定另一個資料夾;它同樣不能用新名稱取代已存在的項目。這些限制不能取代碰撞清單和備份。若預覽結果需要同時搬移檔案,這就不是單純改名工作,應停止並另行設計搬移流程。
只有在測試副本、碰撞結果全為 False、-WhatIf 每一行都符合對照後,才在同一份命令移除 -WhatIf 執行。不要在唯一原檔上重跑,也不要為了「整理乾淨」刪除原資料夾。原資料夾就是這次交付的回復點;若新名稱不正確,保留失敗副本作為紀錄,再從原資料夾建立新的測試副本重做。
交付前核對數量、名稱與內容
改名完成不代表交付完成。先依名稱排序,確認所有檔案都有且只有一個相同日期前綴,檔案數量與原資料夾一致,而且沒有預期外的類型。接著打開代表性的設計檔、PDF 或圖片,確認應用程式可讀取內容;改名本身不會驗證檔案是否損壞。
可把原資料夾與交付副本的檔名各自複製成純文字清單,再用文字差異比對工具按行查看每一列是否只多了預期前綴。text-diff 只比較貼入文字,不會檢查資料夾、檔案雜湊或內容,因此人工開啟與收件端測試仍要保留。
最後把日期含義、原始資料夾位置、執行人與抽查結果寫入交付紀錄。收件人若回報名稱規則錯誤,團隊可以從未修改的來源重新產生一批,而不必在已改名的檔案上猜逆向規則。
常見問題
為什麼不用每個檔案的修改日期當前綴?
修改日期可能因複製、同步或軟體儲存而不同,未必代表交付批次。若需求是標示同一次交付,應先選定一個明確日期並套用到整批;若真的要依各檔時間命名,需另寫規格並驗證時區與來源欄位。
Get-Date 顯示的日期不是客戶交付日怎麼辦?
不要直接使用系統日期。把 $datePrefix 設成已確認的明確字串,例如 '2026-08-10',並在交付紀錄註明它代表的事件。
-WhatIf 沒報錯就能直接在原資料夾執行嗎?
不能。-WhatIf 只預覽命令動作,不是備份,也不會替你判斷日期是否符合業務規則。仍應保留原資料夾,只在測試副本確認後執行。
Exists 出現 True 時可以用 Force 覆蓋嗎?
不應這樣處理。Rename-Item 不能以同名取代既有項目;更重要的是,碰撞表示命名規則或資料夾內容需要人工釐清。先更換前綴、排除已處理檔案或建立新的副本。
ToolboxHub 能替 Windows 檔案自動加日期嗎?
不能。大小寫轉換工具只協助整理文字代號,文字差異比對只比較兩份清單;檔案總管備份、PowerShell 預覽、實際改名與內容抽查都在使用者的 Windows 環境完成。