• 締切済み

ファイルリストを元に階層を保ったファイルコピー

コピーしたいファイルのフルパスが書かれているtxtファイルを元に、復数ファイルのコピーを行いたいです。 下記の質問を元にbatを作成しましたが、階層は保たれないようで…。 xcopyでならいけるかと修正してみたものの、フルパスのせいか希望する動作になりませんでした。 http://okwave.jp/qa/q5030613.html ディレクトリ構造を保ちながらコピーできるbatの作り方、または上記可能なフリーソフトをご教示いただきたいです。

みんなの回答

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

>コピー先のフォルダにも同じようにフォルダとファイルを作成してある状態でbatをたたくとコピー出来ました。 なるほど。 しかしそれでは、「%%~A部分でエラー」でなく、「copy %A% %B%の部分でエラー」ではないのですか? echo F| xcopy %A% %B% に変えてみてください。

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

>ですが、%%~A部分でエラーになり上手く処理されませんでした。 まるごとBATファイルにするとエラーにはなりません。 どこか修正したのでしょうが、修正後の物を全部載せてください。

ruk1111
質問者

お礼

ありがとうございます、お手数おかけします。 修正したのはフォルダの名前のみです。 改めて試した所、コピー先のフォルダにも同じようにフォルダとファイルを作成してある状態でbatをたたくとコピー出来ました。 ですが、私が行いたいのは空のフォルダへリストに書いたファイルたちを階層を保ってコピーなのです…。 言葉足らずで申し訳ありません。よろしくお願いいたします。

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

C:\foo\bar\aaaa.txt C:\foo\baz\bbbb.txt C:\foo\bam\mem\ccc.txt と書いてあったとして、それらを、 C:\hoge\bar\aaaa.txt C:\hoge\baz\bbbb.txt C:\hoge\bam\mem\ccc.txt にコピーするようなイメージでしょうか? for /f "delims=" %%A in (filelist.txt) do call :sub "%%~A" goto :EOF :sub set A=%1 set B=%A:C:\foo=C:\hoge% copy %A% %B% goto :EOF

ruk1111
質問者

お礼

回答ありがとうございます。ですが、%%~A部分でエラーになり上手く処理されませんでした。いただいたコードをそのままbatファイルにしたのですが使用方法違いますでしょうか?

  • masatsan
  • ベストアンサー率15% (179/1159)
回答No.1

list.txt j:\test\1 j:\test\2 bat FOR /F %%i in (list.txt) do xcopy /e %%i "j:\test\target" バッチはリンク先を参考にさせてもらいました。

ruk1111
質問者

お礼

回答ありがとうございます。ですが試したみたところ、拡張子までのフルパスで書いた(それぞれ階層が異なる)複数ファイルのコピーはできないようでした…。

関連するQ&A