【AIによる回答】
複数のフォルダから、特定の名前が含まれるファイルだけをコピーし、フォルダの階層構造はコピーしないという要件には、PowerShellを使用するのが最も柔軟で確実な方法です。コマンドプロンプトのrobocopyやxcopyでも同様のことは可能ですが、PowerShellのほうがシンプルで直感的に記述できます。以下にPowerShellを使った方法を解説します。PowerShellを使う方法コマンドの構文powershellGet-ChildItem -Path "C:\source_folder" -Recurse -File -Filter "*ファイル名の一部*" | Copy-Item -Destination "C:\destination_folder"コードは注意してご使用ください。コマンドの解説
Get-ChildItem -Path "C:\source_folder" -Recurse -File:
Get-ChildItem:指定した場所にあるアイテム(ファイルやフォルダ)を取得するコマンドレットです。-Path "C:\source_folder":コピー元のルートフォルダを指定します。-Recurse:サブフォルダの中も再帰的に検索するよう指示します。-File:検索対象をファイルに限定します。このオプションが、フォルダをコピーしないための重要なポイントです。-Filter "*ファイル名の一部*":
- 検索するファイルの条件をワイルドカードで指定します。
*は任意の文字列を表します。- 例:
*report*.logとすると、「report」という文字列を含む拡張子.logのファイルを対象とします。- 例:
*.txtとすると、拡張子が.txtのファイルをすべて対象とします。|(パイプ):
- 左側のコマンドの結果(ここでは取得したファイルの一覧)を、右側のコマンドに渡します。
Copy-Item -Destination "C:\destination_folder":
- 渡されたファイルすべてを、指定されたコピー先フォルダにコピーします。
具体的な実行例「C:\Users\YourName\Documents」フォルダ以下のすべてのサブフォルダから、「report」という文字を含む.xlsxファイルを、「C:\Backup」フォルダにコピーする場合の例です。事前にコピー先のフォルダを作成しておいてください。powershellGet-ChildItem -Path "C:\Users\YourName\Documents" -Recurse -File -Filter "*report*.xlsx" | Copy-Item -Destination "C:\Backup"コードは注意してご使用ください。
実行手順
- スタートメニューから「PowerShell」を検索し、起動します。
- 上記のコマンドをPowerShellウィンドウに貼り付け、
Enterキーを押します。- コピーが完了すると、指定したコピー先フォルダに、条件に合致するファイルだけがコピーされます。
