• ベストアンサー

バッチでサブフォルダ内のファイルも含めたコピー処理をするには

DOSコマンドのコピーコマンドについての質問です。 指定されたフォルダ内のファイル全て(サブフォルダ内に格納されているファイルも全て)をc:\bkup\にコピーするバッチを組みたいのですがどのようにすればよいのでしょうか。 xcopy /y /e %1 c:\bkup\ とした場合、サブフォルダもコピー対象に入りますがサブフォルダ内のファイルの格納先がc:\bkup\サブフォルダ名\になってしまい、私の実現したい処理とは異なります。 サブフォルダ内のファイルもc:\bkup\にコピーするにはどうすればよいのでしょうか。 宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • you-m
  • ベストアンサー率58% (190/327)
回答No.2

では、このように変更を。 for /f %%a >>> for /f "tokens=*" %%a

ak9457
質問者

お礼

おかげさまで目的のバッチを組むことができました。 本当にありがとうございました。

その他の回答 (1)

  • you-m
  • ベストアンサー率58% (190/327)
回答No.1

いまいち質問の意味がわかりにくいですが、こういうことでしょうか。 c:\data\sub1\aaa.dat c:\data\sub2\bbb.dat というのがバックアップ対象だったとして、 c:\bkup\aaa.dat c:\bkup\bbb.dat という風にコピーしたいということであれば、xcopyコマンドひとつでは、不可能です。 OSがNT/2000/XPであれば、次のようなバッチファイルで解決できます。 @echo off for /f %%a ('dir /b/s c:\data') do ( copy %%a c:\bkup ) 以上 ご参考までに。

ak9457
質問者

お礼

回答ありがとうございます。 ご教授いただいた方法でうまくいきました。 しかしスペースを含んだファイルがある場合にうまくいかないようです。 以下のように""で囲んでみたのですが%aにはスペースの前までのファイル名がすでに格納されているようでうまくいきませんでした。 for /f %%a in ('dir /b/s c:\data') do ( copy "%%a" c:\bkup ) 対処方法等ありますでしょうか。 宜しくお願いいたします。 尚、質問の意味はyou-mさんの認識通りです。 説明下手で申し訳ございません。

関連するQ&A