• 締切済み

バッチでリストに基づきサブフォルダも含めファイルをコピー・削除する方法

お世話になります。 バッチでのファイルコピーで、あるディレクトリを対象に テキストリスト(たとえば sample.txt)に書かれてあるファイルのみを 違うディレクトリにコピーしようとしているのですが、 サブディレクトリにあるファイルも含めてコピーする方法がないかと思い ご質問させていただきました。 またコピー終了後にコピーしたファイルは削除する方法もあれば 併せてお願いできますでしょうか? 一応こちらの質問を参考としたのですが、 http://oshiete1.goo.ne.jp/qa3913616.html なかなかうまくいかず・・・ また sample.txt には以下のようにファイル名しか 書かれておりません。 -- abcd.txt efgh.pdf ijkl.xls mnop.exe ... -- この場合のバッチの書き方をお教えいただけませんでしょうか? よろしくお願いいたします。

みんなの回答

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.3

#2です。 >実際の書き方ぽくすると、 意味不明です。C:\document\ って何ですか?何故%%Aにしない?sample.txtから読んだファイル名は%%Aに入ってるんですよ。 >for /f "delims=" %%B in ('dir /s /b C:\document\') do copy %%B D:\bkup\ は、「C:\document\の下のファイルをすべてD:\bkup\にコピーせよ」という意味ですが、自分が何をしたいのか、落ち着いて考えてください。 せっかく回答を書いたのにそれを無視されると回答する意味がないです。

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.2

コピーした後削除と言うことなら、moveすればいいです。同じディスク内なら実際のコピーが発生しないので早いし。 サブディレクトリ下も探したければ dir /s /b を使います。 for /f "delims=" %%A in (sample.txt) do ( for /f "delims=" %%B in ('dir /s /b "%%A"') do move %%B TO-DIR )

mrtnorik
質問者

補足

ご回答ありがとうございます。 さっそく上記の方法でためさせていただきました。 実際の書き方ぽくすると、 for /f "delims=" %%A in (sample.txt) do ( for /f "delims=" %%B in ('dir /s /b C:\document\') do copy %%B D:\bkup\ ) のようにしました。 この例ではmoveせずにとりあえずcopyとしております 正常に動作はしてくれているようですが、 sample.txtに書かれたファイル以外もコピーしてしまいました。 ちなみにこのバッチファイルとsample.txtは デスクトップにあります。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

あっちのことが分かっていれば, 「sample.txt の各行にある文字列を名前として持つようなファイルが見つかればいい」ということはわかりますよね. つまり for をネストさせればいい. ちなみに同じ名前のファイルが複数あったときはどうしますか? あと, 「コピーしたファイルを削除する」なら del で十分では?

mrtnorik
質問者

お礼

ありがとうございます。 ネストすればよかったんですね。 参考にさせていただきます。

関連するQ&A