如何查找子資料夾中缺少特定屬性的所有檔案?

如何查找子資料夾中缺少特定屬性的所有檔案?

在我的主要 Windows 10 機器上,我使用 Steam 截取了大量電玩螢幕截圖。在 Steam 的螢幕截圖資料夾 ( Steam\userdata\<user_id>\760\remote) 中,它會為每個遊戲建立一個新資料夾,該資料夾本身包含一個screenshots資料夾,其中包含您拍攝的螢幕截圖。

我曾經將這些螢幕截圖備份到 Google 相簿。為了獲得帶有正確日期的螢幕截圖上傳,我使用 exiftool 在當時存在的所有影像檔案上設定「拍攝日期」屬性。

上傳後我沒有刪除這些文件,因為我仍然希望 Steam 能夠識別它們。

從那時起,我拍攝了更多螢幕截圖,並希望上傳這些新的螢幕截圖,而無需重新上傳已上傳的螢幕截圖(Google 會將它們識別為重複項,但這仍然浪費我的頻寬和時間,有165 個資料夾和數十個資料夾)數千張圖像)。

我能想到的新螢幕截圖和之前上傳的螢幕截圖之間的唯一區別是新螢幕截圖將缺少「拍攝日期」屬性。我手邊沒有上傳最後一批的日期,雖然我可以從 Google Photos 中取得該日期,但我寧願不這樣做。

有什麼方法可以遞歸搜尋頂級資料夾中缺少特定屬性的檔案嗎?

答案1

我找到了一個類似的問題,幫助我弄清楚如何做到這一點。

使用 Powershell 取得「詳細資料」標籤中列出的屬性

該問題的答案連結到 Microsoft 開發博客,其中作者連結了一個腳本並解釋瞭如何使用它來從文件的遞歸列表中獲取屬性。

列出 CSV 中的音樂檔案元資料並使用 PowerShell 在 Excel 中開啟

我採取的具體步驟如下:

  1. 下載了取得 FileMetaDataReturnObject.ps1腳本來自 TechNet 庫
  2. 在具有管理員權限的 Powershell 視窗中,我授予自己使用命令執行未簽名腳本的權限Set-ExecutionPolicy Unrestricted
  3. 我使用命令將腳本載入到記憶體中C:\Users\<username>\Desktop\Get-FileMetaDataReturnObject.ps1
  4. 我使用命令創建了一個對象,其中包含螢幕截圖資料夾中每個資料夾和文件的所有元資料屬性$fileMeta = Get-FileMetaData -folder (gci "C:\Program Files (x86)\Steam\userdata\<user_id>\760\remote" -Recurse -Directory).FullName這在我的機器上花了三個小時才能完成。
  5. 然後,我使用命令導出了我需要的特定屬性$fileMeta | select Path, Kind, "Date taken" | Export-Csv -Path "C:\Users\<username>\Desktop\screenshots.csv" -Encoding ASCII -NoTypeInformation
  6. 在 Notepad++ 中,我標記了包含該單字的所有行thumbnails(以忽略 Steam 創建的自動生成的縮圖子資料夾)、Folder(以忽略一般資料夾)以及,"?(出於某種原因,Powershell 似乎無法正確解析日期並且附加每個開頭都有一個問號,但這幫助我輕鬆過濾掉空值)並刪除它們。
  7. 然後我得到了需要備份到 Google Photos 的檔案清單。

保留上次上傳日期並使用 Windows 搜尋命令datecreated: d/m/yyyy .. d/m/yyyy(範圍在上次上傳日期和現在之間,使用澳洲格式)可能會更容易,但是這兩種方法都需要一些調整來過濾掉您不需要的內容需要像縮圖一樣,同時保留組織(即每個螢幕截圖來自哪個遊戲)。

相關內容