web-dev-qa-db-ja.com

Windowsはサブフォルダーから1つのフォルダーにファイルをバッチコピーします

D:\ images(ランダムな名前のサブフォルダーはここにあります)にあるすべての* .tifファイルをd:\ allにコピーするバッチスクリプトを作成しようとしました。

xcopy D:\Downloads\*.TIF D:\temp\ /s

動作しますが、すべてのフォルダツリーでコピーされます。他のキーを使用しようとしましたが、機能しません。手伝ってくれてありがとう!

14
Sergii Rechmp

FORはあなたの友達です。読んだ HELP FOR/Rオプションと%~nx変数置換。そして、この非常に単純なコードを試してください。

   pushd d:\downloads
   for /r %%a in (*.tif) do (
     echo COPY "%%a" "d:\temp\%%~nxa"
   )
   popd

結果を注意深く観察し、ECHOコマンドを削除します。

エラー、重複した名前、エッジケース、予約文字のある名前、競合状態、宇宙イベントなどに対処するには、コードを改良する必要があります...

37
PA.

たとえば、Windowsファイルエクスプローラーを使用してファイルを検索* .gif、検索ウィンドウでファイルを取得し、Edit => Select Allを使用して、コピーしてから目的のフォルダーに貼り付けました。これにより、すべてのサブディレクトリ内のすべてのgifファイルが単一のフォルダーにコピーされました。多数のファイルの場合、ハングアップ/応答しないことがありますが、それ以外の場合は問題なく動作します。

5
Sham Yemul
pushd D:\Source
   for /r %%a in (*.?*) do (
       MOVE "%%a" "D:\Destination folder\%%~nxa"
   )
popd
3
Stur

XXCOPYフリーウェアを使用することもできます。 XCOPYのように機能しますが、/ SGパラメータを使用すると、サブディレクトリがフラット化されます。使い方はこちら こちら

1
Ev0oD