「Windows 10ミニTips」は各回の作成時点で最新のWindows 10環境を使用しています。

Windows PowerShellで一括削除

OneDrive / OneDrive for Businessを複数デバイスで使用すると、同期の競合が発生することがある。たとえばデスクトップPCで任意のファイルを編集し、その後ノートPCで同一ファイルを編集。同期完了前にデスクトップPCでファイルを編集すると発生する。競合が発生した際の動作は設定ダイアログで確認可能だ。

  • OneDrive / OneDriveの設定ダイアログに並ぶ「Office」タブの「同期の競合」セクションで動作を選択する

同期の競合が発生すると「{ファイル名}-{コンピューター名}」を名前とするファイルが作成される。大事なファイルが紛失してしまうよりマシだが、これが意外と邪魔な存在だ。

 筆者は取材データや過去に執筆してきた原稿データをOneDrive for Businessフォルダーに保存し、ドキュメントフォルダーはOneDriveフォルダーに移動させて各PCで使用しているが、結構な頻度で同期の競合が発生している。

  • 「000.txt」で同期の競合が発生し、「000-SurfacePro7.txt」が生成された例

競合ファイルを見かけた場合はその都度、手動で削除していたが、少しだけ自動化するため、Windows PowerShellを使ってみた。

  • 任意の手順でWindows PowerShellを起動し、OneDrive for Businessのフォルダーに移動してから、下記囲みの内容を実行すると、競合ファイルを列挙できる ※実行時はコンピューター名をご自身の環境に合わせて変更する(-SurfacePro7の部分)



Get-ChildItem .\ -Recurse -Include *-SurfacePro7* | Select-Object Fullname

  • 今度はパイプ先のコマンドレットを変更した下記囲みの内容を実行した。競合ファイルを確認しながら削除する ※実行時はコンピューター名をご自身の環境に合わせて変更する(-SurfacePro7の部分)



Get-ChildItem .\ -Recurse -Include *-SurfacePro7* | Remove-Item -Confirm

ただし、このワンライナーには欠点がある。「-SurfacePro7」とコンピューター名を決め打ちしている点だ。ご自身の環境に合わせて変更する必要があると同時に、他のコンピューターで発生した競合ファイルは対象に含まれないのである。ちなみに競合ファイルの削除時に確認が不要な場合は、「-Confirm」を取り除けばよい。