xcopy file ke dalam direktori tunggal

21

Saya ingin menggunakan xcopy pada mesin Windows untuk menarik semua file dengan ekstensi .png ke dalam satu direktori.

Saya sudah mencoba xcopy C:\folder\*.png /s C:\png\, tetapi tetap menyimpan sub-direktori di dalam folder \, (misalnya dalam C: \ png, ada C: \ png \ a \ b \ c \ img.png) yang tidak saya inginkan. Saya hanya ingin semua .png di dalam C: \ png tanpa itu mempertahankan struktur direktori yang ada di folder C: \.

bobobobo
sumber
Coba ini- pcworld.com/article/2105149/...
Swastik Padhi

Jawaban:

39

Ini bisa dilakukan dengan baik for:

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

Tidak ada yang mewah.

Joey
sumber
Berhasil! Mau jelaskan untuk apa %fini?
bobobobo
Ini variabel loop.
Joey
3
Ini tidak berhasil untuk saya, saya mendapatkan sesuatu f" was unexpected at this time. Berubah %funtuk %%fbekerja. Namun, saya menjalankan ini dalam file batch: Jika Anda menggunakan perintah FOR di baris perintah daripada di program batch, gunakan hanya tanda satu persen:% G bukan %% G. ss64.com/nt/for.html
ta.speot.is
1
Uhm, ya. Itu yang diharapkan dan persis seperti yang Anda kutip. Dari mana saya akan kebingungan Anda?
Joey
1
@kayleeFrye_onDeck: Sejauh yang saya tahu tidak ada variabel khusus. Satu-satunya hal yang muncul dalam pikiran adalah bahwa orang yang tidak terbiasa fordapat menjadi bingung tentang dua perbedaan ddalam hal-hal seperti %~dd. The fordokumentasi menyarankan untuk menggunakan huruf besar huruf untuk variabel kebingungan menghindari, namun substitusi masih jelas dibedakan dari nama variabel, saya pikir.
Joey
1

Jika Anda telah menginstal cygwin, ini akan menjadi pekerjaan untuk menemukan:

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

(meskipun itu akan mengalami masalah jika salah satu nama file memiliki spasi di dalamnya - Anda akan menemukan beberapa varian dari sebuah findperintah yang akan bekerja dalam semua keadaan sekalipun)

Jika Anda menjalankan Vista, 2003 atau 2008 maka "forfile" yang kurang fleksibel namun tetap bermanfaat adalah teman Anda. Sesuatu seperti:

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

Catatan: Saya belum menguji salah satu dari perintah di atas, tetapi secara teori mereka harus bekerja ...

David Spillett
sumber
+1 baru saja memverifikasi bahwa perintah FORFILES berfungsi. Saya menjalankannya dua kali dan menyalin 2 kali w / out prompt, jadi saya menganggapnya hanya menimpa jika menemukan duplikat.
hyperslug