ワイルドカードを使用して、名前に「- copy」が含まれるファイルを削除するにはどうすればよいですか?

ワイルドカードを使用して、名前に「- copy」が含まれるファイルを削除するにはどうすればよいですか?

私には問題があるようです名前に指定されたテキストが含まれるファイルを削除するにはどうすればよいですか?削除したくないものは削除してしまいます。

追加の内蔵ハードドライブをインストールし、OneDriveフォルダを次の手順に従って移動した後、OneDriveに問題が発生したためマイクロソフト サポート何が悪かったのかわかりませんが、すべてのファイルを新しいハードドライブにコピーし、OneDrive は各ファイルの複製と同期しています- copy。各ファイルの拡張子の前にあるファイル名の末尾に が付いています。これは数千のファイルにわたるギガバイト単位のデータです。

Powershell または cmd.exe で使用すると何が削除されるか確認したところ*- copy.*、作成したファイル (copy.bat) が削除されるようなので、そのファイルを保持しておきたいと思います。

- copyワイルドカードを使用して、ファイル名の末尾にあるすべてのものを削除し、copy.bat などのファイルを保護するにはどうすればよいでしょうか?

答え1

現時点では、 が と という2*- copy.*つのスペースで区切られた引数として解析されています。これを見ると、これらのうち 2 番目がファイルに一致することが簡単にわかります。*-copy.*copy.bat

修正方法は、不変部分を二重引用符で囲むことです (具体的には、スペースが二重引用符内に存在することを確認します) *"- copy".*

DIR *"- copy".*

Get-ChildItem *"- copy".*

*これは Windows なので、 Powershell/CMD ツールではなくコマンドによって解析されるため、引用符で囲んでも問題ありません。

DIR "*- copy.*"

Get-ChildItem "*- copy.*"

余談ですが、UNIX/Linux ベースのシステム (Mac を含む) を使用する予定がある場合は、ワイルドカードを引用符で囲んでパターンとして機能させる習慣を身につけないでください。ワイルドカードは文字通りのアスタリスクとして解析され、パターンとして機能しません。私の最初の提案はどこでも機能します。2 番目の提案は Windows に固有のものです。

答え2

ファイル.batは、削除するファイルと同じフォルダにある必要はありません。 を実行して、別のフォルダから実行することもできます \path\copy.bat

に加えてさらにファイルが影響を受ける場合はcopy.bat、 を実行する前にそれらを別の場所にコピーする必要がありますcopy.bat

PowerShell では、CMD で使用できる基本的な正規表現よりも洗練された正規表現を使用することもできます。命名規則をより適切に定義できる場合は、正規表現を改良して、含まれるファイルの数を減らすことができます。

答え3

便利な無料ツール「Bulk Renaming Utility」をご覧ください。https://www.bulkrenameutility.co.uk

一括名前変更タスクを再帰的にスキャンしてプレビューすることができ、プレビュー機能があるので非常に便利です。ただし、最初にバックアップを取る必要があります。これは強力なツールであり、コミット後に元に戻すオプションはありません。

関連情報