質問: 題名の通り、batファイルで robocopy を使用し、データをコピーしたいと考えています。 エラースキップやログを残したいため、ファイルのコピーにはrobocopyを利用する方向で考えております。 **現在できていること** あるフォルダから別のフォルダへ、指定したキーワードを含む名前のファイルをコピーする **できていないこと** 名前にスペースを含むファイルがコピーできない 例:robo を含む名前のファイルをコピーしたい * **コピーできるファイル** robo.txt、robo123.ppt * **コピーできないファイル** robo robo.txt、robo 123.ppt robocopyではスペースを含むファイル名の認識ができないのでしょうか。 他のやり方でコピーできる方法をご存知の方は教えていただけると幸いです。 よろしくお願いいたします。 --- 2020/03/23 追記 ------------- コピーしたいファイル名が事前に決まっている場合は "" でファイル名を囲えばいいと思うのですが、 フォルダ内のファイルを検索し、指定した名前を含むファイルを抽出したい場合はどうすればよいのでしょうか。 現在、for文を使用しています。 ``` rem //コピー元のフォルダパス指定 set fs_src=※任意のフォルダパス rem //抽出条件文字の指定 set name=robo for /r %fs_src% %%I in (*%name%*.*) do robocopy ~ ``` 簡易的にまとめましたが、上記のようなコードを書いております。 --- 2020/03/25 追記 ------------- アドバイス頂いたやり方で空白を含む名前のデータをコピーすることができました。 * コピー元データの保存先:fs_src * 抽出したデータの保存先:fs_bk * 抽出したいファイル名: name robocopy /s "%fs_src%" "%fs_bk%" "*%name%*.*" 現在、コピーと同時にLOGファイルの出力、ディレクトリ配下のみのコピーに挑戦中です... ``` robocopy /s "%fs_src%" "%fs_bk%" "*%name%*.*" /LOG:%logdir%\%target%_%ToDay%.txt %%~pI %fs_bk% %%~nxI ``` 上記のように続けてLOGコマンドを打つと、LOGデータしか作成されず、データのコピーができませんでした。
回答: for文で処理せずともrobocopyの引数で対応出来ると思います。 ``` rem //コピー元のフォルダパス指定 set fs_src=※任意のフォルダパス rem //コピー先のフォルダパス指定 set fs_dest=※任意のフォルダパス rem //抽出条件文字の指定 set name=robo robocopy "%fs_src%" "%fs_dest%" "*%name%*.*" ```