「Windows 10ミニTips」は各回の作成時点で最新のWindows 10環境を使用しています。
Windows PowerShellで一括削除
OneDrive / OneDrive for Businessを複数デバイスで使用すると、同期の競合が発生することがある。たとえばデスクトップPCで任意のファイルを編集し、その後ノートPCで同一ファイルを編集。同期完了前にデスクトップPCでファイルを編集すると発生する。競合が発生した際の動作は設定ダイアログで確認可能だ。
同期の競合が発生すると「{ファイル名}-{コンピューター名}」を名前とするファイルが作成される。大事なファイルが紛失してしまうよりマシだが、これが意外と邪魔な存在だ。
筆者は取材データや過去に執筆してきた原稿データをOneDrive for Businessフォルダーに保存し、ドキュメントフォルダーはOneDriveフォルダーに移動させて各PCで使用しているが、結構な頻度で同期の競合が発生している。
競合ファイルを見かけた場合はその都度、手動で削除していたが、少しだけ自動化するため、Windows PowerShellを使ってみた。
-
任意の手順でWindows PowerShellを起動し、OneDrive for Businessのフォルダーに移動してから、下記囲みの内容を実行すると、競合ファイルを列挙できる ※実行時はコンピューター名をご自身の環境に合わせて変更する(-SurfacePro7の部分)
Get-ChildItem .\ -Recurse -Include *-SurfacePro7* | Select-Object Fullname
Get-ChildItem .\ -Recurse -Include *-SurfacePro7* | Remove-Item -Confirm
ただし、このワンライナーには欠点がある。「-SurfacePro7」とコンピューター名を決め打ちしている点だ。ご自身の環境に合わせて変更する必要があると同時に、他のコンピューターで発生した競合ファイルは対象に含まれないのである。ちなみに競合ファイルの削除時に確認が不要な場合は、「-Confirm」を取り除けばよい。