Just another IT site ※IT系の記事は当方環境での実施内容となるため実施する場合は自己責任でお願いいたします。At Your Own Risk!! TURN BACK WHILE YOU CAN
PR

複数のフォルダから、特定の名前が含まれるファイルだけをコピーし、フォルダの階層構造はコピーしない

※IT系の記事は当方環境での実施内容となるため実施する場合は自己責任でお願いいたします。スクリプトはAI生成のものも多いのでコピー&ペーストの際は文字コードに注意ください!

【AIによる回答】

複数のフォルダから、特定の名前が含まれるファイルだけをコピーし、フォルダの階層構造はコピーしないという要件には、PowerShellを使用するのが最も柔軟で確実な方法です。 
コマンドプロンプトのrobocopyxcopyでも同様のことは可能ですが、PowerShellのほうがシンプルで直感的に記述できます。
以下にPowerShellを使った方法を解説します。
PowerShellを使う方法
コマンドの構文
powershell
Get-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」フォルダにコピーする場合の例です。
事前にコピー先のフォルダを作成しておいてください。
powershell
Get-ChildItem -Path "C:\Users\YourName\Documents" -Recurse -File -Filter "*report*.xlsx" | Copy-Item -Destination "C:\Backup"
コードは注意してご使用ください。


実行手順
  1. スタートメニューから「PowerShell」を検索し、起動します。
  2. 上記のコマンドをPowerShellウィンドウに貼り付け、Enterキーを押します。
  3. コピーが完了すると、指定したコピー先フォルダに、条件に合致するファイルだけがコピーされます。
タイトルとURLをコピーしました