複数階層のフォルダの中から、同じ名前のフォルダ名の中にあるファイルだけ抜き出して、別フォルダに集めたい
解決したいこと
複数階層のフォルダの中から、同じ名前のフォルダ名の中にあるファイルだけ抜き出して、別フォルダに集めたい。
例えば下記のような階層のフォルダがあったとして、
サブフォルダABCにも、サブフォルダDEFにも、サブフォルダGHIにも、それぞれの下にXという名前のサブフォルダが存在した場合、最終的にC:\WORKにすべてのXフォルダ下にあるすべてのファイルをコピーしたい。
この例だとFile-X1.xlsx , File-X2.xlsx , FILE-X3.xlsx ,File-X4.xlsx , File-X5.xlsx , FILE-X6.xlsx の6個のファイルがc:\workの直下に集まるのがゴールです。
実際にはABCフォルダと同じ階層のフォルダは100個位あって、すべてのフォルダにはXという名前のサブフォルダが必ず存在し、その100個のXサブフォルダにあるファイルはすべて.xlsxファイルですが、入っている数はバラバラです。(0個のケースもあります。)
これを想定してバッチを書くことはできるのでしょうか。
C:\XYZ
└ABC
└A
└File-A.xlsx
└B
└File-B.xlsx
└X
└File-X1.xlsx , File-X2.xlsx , FILE-X3.xlsx
└DEF
└D
└File-D.xlsx
└E
└File-E.xlsx
└X
└File-X4.xlsx , File-X5.xlsx
└GHI
└G
└File-G.xlsx
└H
└File-H.xlsx
└X
└File-X6.xlsx
自分で試したこと
FOR /R C:\XYZ %%X IN (.xlsx) DO (
copy "%%X" C:\work
)
だと、階層を問わずすべての.xlsx がc:\workに入ってしまい、要件にあいませんでした。