依建立日期自動將文件整理到資料夾中

使用 PowerShell 依 Windows建立日期將檔案分類到資料夾。以下腳本將檔案以年月格式分組到指定資料夾下_ByCreationDate,首次執行時會預覽計畫的移動操作,然後再變更檔案位置。此腳本僅處理單一資料夾內的文件,不會影響現有子資料夾。

此操作會將舊的 SubDiv 工作流程取代為 Windows 內建的 PowerShell 指令。請務必先備份或在複製的測試資料夾中嘗試這些步驟,尤其是在檔案非常重要的情況下。

「創建日期」的含義

PowerShell 會將檔案系統的建立時間戳顯示為 `<filesystem_created_timestamp>` CreationTime。它與 `<filesystem_created_timestamp>` 不同LastWriteTime,後者記錄的是檔案內容的最後修改時間。微軟指出,不同的檔案系統記錄時間戳記的方式可能不同,而且某些平台不支援真正的建立時間。請將此時間戳記視為 Windows 系統報告的文件儲存日期,而不是文件內容最初建立時間的證明。對於包含嵌入日期的照片或文檔,請單獨檢查其元資料。

請參閱微軟關於屬性CreationTime和Windows 檔案時間戳記的文件。

使用 PowerShell 將檔案依日期資料夾排序

1. 選擇資料夾並檢查其內容

選擇要整理檔案的資料夾,例如您為此任務建立的暫存資料夾。在檔案總管中,切換到「詳細資料」視圖,並查看「建立日期」列,以便確定要使用的時間戳記。盡可能將目標資料夾放在同一磁碟機上,並關閉可能仍在寫入檔案的程式。

Windows 檔案總管顯示未分類的範例文件,並可見「建立日期」欄位。
排序前,請先在詳細資料檢視中檢查「建立日期」值。

腳本會_ByCreationDate在選定的資料夾內建立文件,不會進入現有的子資料夾。預設情況下,腳本Get-ChildItem也會忽略隱藏的檔案;範例中也保留了此更安全的預設設定。

2. 確認 PowerShell 將讀取的日期

開啟 Windows 終端機或 PowerShell,並將範例路徑替換為您的資料夾路徑。此唯讀指令會列出每個直接檔案及其建立時間戳記:

Get-ChildItem -LiteralPath 'C:\Path\To\Your\Folder' -File |
  Sort-Object CreationTime |
  Select-Object Name, CreationTime

使用檔案總管檢查幾個已知檔案。微軟文件Get-ChildItem中提到了一個用於檢索目錄內容的 cmdlet;它的-File參數會將結果篩選為文件。

PowerShell 範例顯示按建立時間排序的檔案名稱。
在選擇資料夾結構之前,請先查看建立日期。

3. 將排序腳本儲存到來源資料夾之外

將以下檔案儲存到SortByCreatedDate.ps1正在整理的資料夾之外的其他位置,例如 `/etc/scripts/` C:\Scripts。將腳本保存在其他位置可以防止它隨文件一起移動。請將路徑變更$source為實際的資料夾路徑:

$source = 'C:\Path\To\Your\Folder'
$destinationRoot = Join-Path $source '_ByCreationDate'
$files = Get-ChildItem -LiteralPath $source -File

foreach ($file in $files) {
    $month = $file.CreationTime.ToString('yyyy-MM')
    $targetFolder = Join-Path $destinationRoot $month
    New-Item -ItemType Directory -Path $targetFolder -Force | Out-Null
    Move-Item -LiteralPath $file.FullName -Destination $targetFolder -WhatIf
}

每個檔案都會被指派到一個資料夾,例如 `<folder_name> _ByCreationDate‚5-03`。New-Item如果需要,該行會建立目標月份資料夾。 `<folder_name>`Move-Item執行檔案移動操作;其-WhatIf開關指示 PowerShell 在不移動檔案的情況下描述操作。

4. 預覽,然後套用這些操作

例如,從 PowerShell 執行已儲存的腳本:

& 'C:\Scripts\SortByCreatedDate.ps1'

仔細閱讀預覽路徑。腳本在預覽過程中會建立空的目標資料夾,但-WhatIf不會刪除來源檔案。如果建議的資料夾正確,請-WhatIf從該Move-Item行中刪除相關內容,儲存腳本,然後再次執行。之後,請在檔案總管中驗證幾個檔案。

PowerShell 顯示檔案進入 _ByCreationDate 下的年月資料夾的 WhatIf 預覽。
預覽範例:在套用移動之前,請確認每個來源路徑和目標路徑。
檔案總管顯示按建立日期月份資料夾排列的範例檔案。
腳本產生的年-月資料夾結構範例。

重複排序並處理常見問題

這是一個批次整理腳本:它會在每次執行時對現有檔案進行排序,而不是持續監控資料夾。對於定期清理,請將腳本放在來源資料夾之外,並使用 Windows 工作排程器按計劃執行。在-WhatIf檢查計劃路徑之前,請保留此腳本;只有在準備好使用計劃運行來移動文件時,才將其刪除。

  • 同名文件:如果目標月份中已存在同名文件,PowerShell 會報告衝突。腳本不會-Force覆蓋檔案。請先解決重複檔案問題,或選擇新的目標位置,然後再重試。
  • 子資料夾保持不變:此腳本刻意沒有設定任何-Recurse開關。只有在確定如何處理重複名稱並保留每個資料夾的原始結構之後,才能新增遞歸排序功能。
  • 日期顯示異常:請檢查文件的「建立日期」欄位和儲存設備。檔案系統的時間戳支援和精確度各不相同,因此網路共用、外部磁碟機、復原或同步工作流程可能會報告不同的日期。

相關的微軟參考資料是Move-Item文件(包括其-WhatIf參數)和Get-ChildItem文件。

留下評論

使用 FotoSketcher 將照片轉換為繪畫、素描和卡通

使用 FotoSketcher 將照片轉換為繪畫、素描和卡通

使用 FotoSketcher Studio 將照片轉換成繪畫、鉛筆素描或卡通。學習如何選擇效果、調整預覽、保存作品。

使用音訊標識符詳細分析和識別音訊文件

使用音訊標識符詳細分析和識別音訊文件

了解音訊標識符揭示的位元率、編碼器和標籤訊息,其傳統工作流程如何運作,以及當前哪些工具可以檢查文件或識別歌曲。

我的照片索引:一款適用於 Windows 的開源照片管理器。

我的照片索引:一款適用於 Windows 的開源照片管理器。

My Photo Index 是一款舊版 Windows 相片目錄管理工具,用於標記、評分和瀏覽本機影像。請查看其文件功能、相容性限制以及一個維護良好的替代方案。

使用屬性變更器變更檔案和資料夾屬性、日期和時間

使用屬性變更器變更檔案和資料夾屬性、日期和時間

學習如何使用屬性變更器安全地編輯 Windows 檔案屬性和時間戳記、更新 JPEG EXIF 照片日期以及預覽批次變更。

如何在 Windows 10 中為每個顯示器設定不同的桌布

如何在 Windows 10 中為每個顯示器設定不同的桌布

為每個 Windows 10 顯示器設定單獨的壁紙,識別顯示器,調整影像適應度,並解決缺少顯示器選擇的問題。

pViewer:一款極簡圖像檢視器和漫畫閱讀器

pViewer:一款極簡圖像檢視器和漫畫閱讀器

了解 pViewer 的功能、照片和漫畫模式的工作原理、應該下載哪個 Windows 版本,以及舊版和重寫版之間的差異。

如何在 Windows 7 和 8 中使用快速鍵切換到下一個桌面背景

如何在 Windows 7 和 8 中使用快速鍵切換到下一個桌面背景

設定 Windows 7 或 8 投影片放映,建立一個小型 VBScript 快捷方式,並指派鍵盤熱鍵來切換到下一張桌布。

NeoDownloader:設定參數並從網站批量下載圖片

NeoDownloader:設定參數並從網站批量下載圖片

學習如何建立 NeoDownloader 專案、選擇爬取範圍、設定映像過濾器和目標位置,以及查看批次下載。

XnConvert:批次應用特效和轉換影像格式

XnConvert:批次應用特效和轉換影像格式

使用 XnConvert 可以批次套用特效、調整照片大小和轉換影像格式。選擇輸出設定、預覽編輯效果並保護您的原始文件。

使用 ManicTime 追蹤工作時間和電腦使用情況

使用 ManicTime 追蹤工作時間和電腦使用情況

了解 ManicTime 如何追蹤應用程式使用情況、活躍時間和空閒時間以及文檔,然後將您的活動歷史記錄轉換為專案標籤和時間表。