xcopyファイルを単一のディレクトリに


21

Windowsマシンでxcopyを使用して、拡張子が.pngのすべてのファイルを単一のディレクトリに取り出したいと思います。

試しましたがxcopy C:\folder\*.png /s C:\png\、\ folder内にサブディレクトリを保持しています(たとえば、C:\ pngにはC:\ png \ a \ b \ c \ img.pngがあります)。C:\ folderにあったディレクトリ構造を保持せずに、C:\ png内のすべての.pngが必要です。


回答:


39

これは古き良きで行うことができますfor

for /r C:\Folder %f in (*.png) do @copy "%f" C:\png

派手なものは何もありません。


できます!何のために説明するの%fですか?
ボボボボ

ループ変数です。
ジョーイ

3
これは私にはうまくいきませんでしたf" was unexpected at this time。動作する%fように変更し%%fます。ただし、これをバッチファイルで実行していました。バッチプログラムではなくコマンドラインでFORコマンドを使用している場合は、%% Gではなく%Gだけを使用してください。 ss64.com/nt/for.html
ta.speot.is 14

1
ええ、はい。それは予想通りであり、まさにあなたが引用したとおりです。あなたの混乱はどこから来たのですか?
ジョーイ14

1
@kayleeFrye_onDeck:私の知る限り、特別な変数はありません。頭に浮かぶ唯一のことは、なじみのない人々がのようなfor2つのことについて混乱するかもしれないというdことです%~ddforドキュメントは、混乱を避けるために、変数のために大文字を使用することを示唆しているが、置換はまだ変数名と明確に区別されている、私は思います。
ジョーイ

1

cygwinがインストールされている場合、これはfindの仕事です。

cp `find /cygdrive/c/folder/* -name '*png'` /cygdrive/c/png/

(ただし、ファイル名にスペースが含まれていると問題が発生します- findすべての状況で機能するコマンドのバリアントがあります)

Vista、2003、または2008を実行している場合は、柔軟性は劣りますが、まだ有用な「forfiles」が友人です。何かのようなもの:

FORFILES /P c:\folder\ /M *.png /S /C "cmd /c copy @file c:\png\"

注:上記のコマンドのいずれもテストしていませんが、理論的には動作するはずです...


+1は、FORFILESコマンドが機能することを確認しました。私はそれを2回実行し、2回目のw / outプロンプトをコピーしたので、重複が見つかった場合は単に上書きすると仮定します。
hyperslug
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.