特定のプロパティが欠落しているサブフォルダー内のすべてのファイルを見つけるにはどうすればよいですか?

特定のプロパティが欠落しているサブフォルダー内のすべてのファイルを見つけるにはどうすればよいですか?

メインの Windows 10 マシンでは、Steam を使ってビデオ ゲームのスクリーンショットをたくさん撮っています。Steam のスクリーンショット フォルダー ( Steam\userdata\<user_id>\760\remote) 内には、ゲームごとに新しいフォルダーが作成され、そのフォルダー自体にも、screenshots撮影したスクリーンショットを含むフォルダーが含まれています。

これらのスクリーンショットは、一度 Google フォトにバックアップしました。スクリーンショットを正しい日付でアップロードするために、exiftool を使用して、その時点で存在していたすべての画像ファイルに「撮影日」プロパティを設定しました。

Steam に認識させたいので、アップロード後にこれらのファイルを削除しませんでした。

それ以来、私はさらに多くのスクリーンショットを撮り、すでにアップロードされているものを再アップロードせずに、これらの新しいスクリーンショットをアップロードしたいと考えています (Google はそれらを重複として認識しますが、165 個のフォルダーと数万枚の画像では、帯域幅と時間の無駄になります)。

新しいスクリーンショットと以前にアップロードしたものの唯一の違いは、新しいものには「撮影日」プロパティがないことです。最後のバッチをアップロードした日付は手元にありません。Google フォトから取得できるかもしれませんが、それは避けたいです。

特定のプロパティが欠落しているファイルを最上位フォルダーで再帰的に検索する方法はありますか?

答え1

同様の質問を見つけることができ、その方法を理解するのに役立ちました。

Powershell を使用して「詳細」タブにリストされている属性を取得する

この質問の回答は、Microsoft Dev Blog にリンクされており、そのブログで作成者はスクリプトへのリンクを提供し、そのスクリプトを使用してファイルの再帰リストからプロパティを取得する方法を説明しています。

PowerShell を使用して CSV で音楽ファイルのメタデータを一覧表示し、Excel で開く

私が実際に実行した手順は次のとおりです。

  1. ダウンロードしたGet-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私のマシンではこれを完了するのに 3 時間かかりました。
  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 が日付を適切に解析できず、それぞれの先頭に疑問符を追加したようですが、これにより null 値を簡単にフィルター処理できました) という単語を含むすべての行をマークし、削除しました。
  7. その後、Google フォトにバックアップする必要があるファイルのリストが残りました。

おそらく、最終アップロード日を保持して Windows の検索コマンドdatecreated: d/m/yyyy .. d/m/yyyy(オーストラリア形式を使用して、最終アップロード日から現在までの範囲) を使用する方が簡単でしょうが、どちらの方法でも、整理 (つまり、各スクリーンショットがどのゲームのものであるか) を維持しながら、サムネイルなどの不要なものをフィルター処理するために、多少の調整が必要になります。

関連情報