xcopy tập tin vào thư mục duy nhất


21

Tôi muốn sử dụng xcopy trên máy Windows để lấy tất cả các tệp có đuôi .png vào một thư mục.

Tôi đã thử xcopy C:\folder\*.png /s C:\png\, nhưng nó vẫn giữ các thư mục con bên trong thư mục \, (ví dụ trong C: \ png, có C: \ png \ a \ b \ c \ img.png) mà tôi không muốn. Tôi chỉ đơn giản muốn tất cả .png bên trong C: \ png mà không giữ lại cấu trúc thư mục trong thư mục C: \.


Hãy thử điều
này-

Câu trả lời:


39

Điều này có thể được thực hiện với cũ tốt for:

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

Không có gì lạ mắt.


Nó hoạt động! Quan tâm để giải thích những gì %flà cho?
bobobobo

Đây là biến vòng lặp.
Joey

3
Điều này không làm việc cho tôi, tôi đã nhận được một cái gì đó cho hiệu quả của f" was unexpected at this time. Thay đổi %fđể %%flàm việc. Tuy nhiên, tôi đã chạy tệp này trong tệp bó: Nếu bạn đang sử dụng lệnh FOR tại dòng lệnh thay vì trong chương trình bó, chỉ sử dụng một ký hiệu phần trăm:% G thay vì %% G. ss64.com/nt/for.html
ta.speot.is

1
Uhm, vâng. Đó là mong đợi và chính xác như bạn đã trích dẫn. Sự nhầm lẫn của bạn đến từ đâu?
Joey

1
@kayleeFrye_onDeck: Theo tôi biết không có biến đặc biệt. Điều duy nhất nảy sinh trong đầu là những người không quen thuộc có forthể bị nhầm lẫn về hai thứ khác nhau dtrong những thứ như thế %~dd. Các fortài liệu cho thấy sử dụng chữ hoa chữ cho các biến để tránh nhầm lẫn, nhưng thay thế vẫn còn phân biệt rõ ràng từ tên biến, tôi nghĩ.
Joey

1

Nếu bạn đã cài đặt cygwin, đây sẽ là một công việc cần tìm:

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

(mặc dù điều đó sẽ gặp rắc rối nếu bất kỳ tên tệp nào có khoảng trắng trong đó - bạn sẽ tìm thấy một số biến thể của findlệnh sẽ hoạt động trong mọi trường hợp)

Nếu bạn đang chạy Vista, 2003 hoặc 2008 thì "forfiles" kém linh hoạt nhưng vẫn hữu ích là bạn của bạn. Cái gì đó như:

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

Lưu ý: Tôi chưa thử nghiệm một trong các lệnh trên, nhưng trên lý thuyết chúng sẽ hoạt động ...


+1 chỉ cần xác minh rằng lệnh FORFILES hoạt động. Tôi đã chạy nó hai lần và nó đã sao chép lời nhắc w / out lần thứ 2, vì vậy tôi giả sử nó chỉ ghi đè nếu tìm thấy bản sao.
hyperslug
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.