アプリ版:「スタンプのみでお礼する」機能のリリースについて

お世話になります。

バッチでのファイルコピーで、あるディレクトリを対象に
テキストリスト(たとえば sample.txt)に書かれてあるファイルのみを
違うディレクトリにコピーしようとしているのですが、
サブディレクトリにあるファイルも含めてコピーする方法がないかと思い
ご質問させていただきました。
またコピー終了後にコピーしたファイルは削除する方法もあれば
併せてお願いできますでしょうか?

一応こちらの質問を参考としたのですが、
http://oshiete1.goo.ne.jp/qa3913616.html
なかなかうまくいかず・・・

また sample.txt には以下のようにファイル名しか
書かれておりません。
--
abcd.txt
efgh.pdf
ijkl.xls
mnop.exe
...
--

この場合のバッチの書き方をお教えいただけませんでしょうか?
よろしくお願いいたします。

A 回答 (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\にコピーせよ」という意味ですが、自分が何をしたいのか、落ち着いて考えてください。

せっかく回答を書いたのにそれを無視されると回答する意味がないです。
    • good
    • 1

コピーした後削除と言うことなら、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
)

この回答への補足

ご回答ありがとうございます。
さっそく上記の方法でためさせていただきました。
実際の書き方ぽくすると、

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は
デスクトップにあります。

補足日時:2009/10/01 09:55
    • good
    • 0

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


あと, 「コピーしたファイルを削除する」なら del で十分では?
    • good
    • 0
この回答へのお礼

ありがとうございます。

ネストすればよかったんですね。
参考にさせていただきます。

お礼日時:2009/10/01 11:38

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています