• ベストアンサー

bat処理リストを元にコピー

batやvbsを使って下記のような動作ができるか教えて頂きたいです。 ・ ・ (1)数十個のファイル名一覧を拡張子付きでcsvでリスト化(ファイル毎に改行)済み (2)上記ファイルを元に[p:]ドライブ内でサブディレクトリを含め検索し[C:\copy]フォルダにコピーする。 以上の動作ですがbatでfor文を使用してやろうとしましたが、サブディレクトリまで含めた検索の動作ができません。 お分かりになる方宜しくお願い致します。

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

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

cd /d P:\ for /f "delims=" %%A in (C:\full-path\filelist.csv) do for /f "delims=" %%B in ('dir /s /b %%A') do copy "%%B" C:\copy ですかね。 数十個だから良いと思いますが、P: の中の全ディレクトリを数十回なめることになります。 もし数百個が対象だと、P: の中の全ファイルリストを作ってからそれと比べるような感じですかね。

takekai123
質問者

お礼

処理時間がある程度掛かってしまうのは覚悟の上でしたので、大変助かりました。 ありがとうございました。

その他の回答 (1)

  • kteds
  • ベストアンサー率42% (1883/4442)
回答No.1

powershell を使って下記のようにすればいいです。 batやvbsを使うよりシンプルになります。 p:\sourceフォルダ傘下のすべてのサブフォルダを含めて、 拡張子 .csv ファイルを抽出して、 c:\dest フォルダに出力する例です。 わずか1行で実現しています。 foreach($i in get-childitem -recurse p:\source\*.csv){copy-item $i -destination c:\dest}

takekai123
質問者

お礼

今回はcsvファイル内に記載のあるファイルをコピー対象にしたいため別の方をベストアンサーとさせて頂きます。 powershell自体の存在も知らなかったので今後勉強の対象とさせて頂きます。 回答ありがとうございました。

関連するQ&A