

バッチファイルでの動作を考えています。  
カレントディレクトリ(target)からサブディレクトリの階層はバラバラですが「test」とファイル名に含まれたファイルを探して、目標のディレクトリ(dest)にファイルのみをコピーをしたいです。

エラースキップやログを残したいため、ファイルのコピーにはrobocopyを利用したいと思っています。  
よろしくお願いします。


CC BY-SA 4.0
2020-01-23T05:48:52.153
62480
2020-01-23T09:51:05.480
2020-01-23T08:59:28.027
3060
37558
question
windows batch-file
特定の文字列をファイル名に含むものだけを探して別フォルダにコピーしたい


あまりスッキリした方法ではないですが、以下のコマンドでどうでしょうか。  
サブディレクトリのコピーを行ってから、カレントのコピーをしています。

[code]

     cd [FromDir]
     for /d %i in (*) do robocopy %i [ToDir] *test* 
     robocopy [FromDir] [ToDir] *test*
    
[/code]


CC BY-SA 4.0
2020-01-23T07:02:01.577
62485
2020-01-23T09:24:31.703
2020-01-23T09:24:31.703
19858
19858
62480
answer


以下の記事の応用で、`for`を利用すれば出来るでしょう。  
[「指定ディレクトリ」内の「任意の階層」にある「指定ディレクトリ名」内にある全ファイルを抽出したい](https://ja.stackoverflow.com/q/60797/26370)

こんな感じでしょうか。

[code]

    for /r TargetDir %I in (*test*.*) do robocopy %~pI DestDir %~nxI
    
[/code]

必要があればrobocopyコマンド指定の最後にファイル選択やログ出力先など細かい指定のオプションを追加してください。  
ただし、フォルダ名やファイル名に空白が含まれていると、おかしなことが発生しそうなので、その辺は注意するか工夫してください。


CC BY-SA 4.0
2020-01-23T09:51:05.480
62492
2020-01-23T09:51:05.480
26370
62480
answer