web-dev-qa-db-ja.com

xcopyを使用して複数のディレクトリから1つのディレクトリにファイルをコピーする

Xcopyを使用して、1つのxcopyコマンドのみを使用して、複数のディレクトリから1つのディレクトリにファイルをコピーすることはできますか?

ディレクトリツリーがあると仮定して

root\Source\Sub1\Sub2

サブフォルダーを含むディレクトリroot\Sourceからroot\Destinationにすべての.xmlファイルをコピーしたいと思います。フォルダ構造をコピーするのではなく、ファイルだけをコピーします。

17
Oddleif

DandDIが言ったように、xcopyは必要ありません。 forステートメントは非常に役立ちます。ただし、dirコマンドの処理結果も示す必要はありません。このコマンドは、

for /R c:\source %f in (*.xml) do copy "%f" x:\destination\

ちなみに、バッチファイルから使用する場合は、変数%fの前にスペア%を追加する必要があるため、コマンドラインは次のようになります。

for /R c:\source %%f in (*.xml) do copy %%f x:\destination\

バッチ内で使用する場合

  • %fを二重引用符で囲む必要があります。そうでない場合、スペースを含むファイル名のコピーは失敗します
34
kokeksibir

そのためにxcopyは必要ありません。必要なすべてのファイルのリストを取得し、その方法でコピーを実行できます。

たとえば、Windows XPコマンドプロンプトでは次のようになります。

 for/f "delims =="%k in( 'dir c:\ source\*。xml/s/b')do "%k" x:\ destination\

/ sはすべてのサブディレクトリに入り、/ bはファイル名とパスのみをリストします。順番に各ファイルが%k変数に割り当てられ、次にcopyコマンドがファイルを宛先にコピーします。唯一のトリックは、宛先がソースの一部ではないことを確認することです。

4
DandDI

「すべての小さなサブディレクトリからすべてのファイルを1つのディレクトリに集める方法」と私が思うこの問題に対する答えは、XXCOPYと呼ばれるソフトウェアをダウンロードすることです。これはXXCOPY.COMから無料で入手でき、幸いにも無料の非商用バージョンがあります。 XXCOPY.COMのヘルプ機能に関するよくある質問の1つは、「すべてのファイルを1つのディレクトリに集める方法」であり、どのスイッチを使用するかがわかります。 XXCOPYはこれを確実に行う方法ですが、.Zipアーカイブで提供されるため、解凍するのはそれほど簡単ではありませんが、特に難しくはありません。 ZipGenius.itのWebサイトから入手できるZipGeniusと呼ばれる解凍プログラムがあるので、XXCOPYをダウンロードする前にZipGeniusをダウンロードすれば、それは小さな部分の小さな時間のダブルワミー(!)

0
Victor Evans