Làm cách nào để di chuyển mọi tệp trong cây vào gốc của cây?


10

Tôi có một thư mục (hãy gọi nó là A) với rất nhiều thư mục con B, C, D, E, sau đó lại có các thư mục con B1, B2, B3, ... C1, C2, C3 ...

Làm cách nào tôi có thể sử dụng cmd để di chuyển tất cả các tệp từ tất cả các thư mục con vào thư mục "gốc" A?


Tôi giả sử bạn muốn mọi tệp trong một gốc chứ không phải trong các thư mục con? Vậy A \ File1, A \ File2, không phải A \ Folder2 \ File1?
Luke Luke

@ Luke - Vâng, bạn hiểu rồi Mỗi tệp tồn tại trong các thư mục và thư mục con được chuyển sang root.
Rook

Câu trả lời:


12

Bài viết gốc của tôi bị bỏ qua để bao gồm phần mở rộng của tệp trong lệnh di chuyển. %~niChỉ trả về tên cơ sở, bạn cần sử dụng %~nxiđể có được cả tên tệp và phần mở rộng! Tôi hy vọng bạn đã không xáo trộn tên tập tin của bạn trên tài khoản của tôi! (

Từ một dấu nhắc lệnh:

cd /d C:\Path\To\A
for /r %i in (*) do @move "%i" "%~nxi"

Nếu bạn cần dọn dẹp các thư mục trống sau đó:

for /d %i in (*) do @rd /s /q "%i"

Bây giờ, nếu bạn có bất kỳ xung đột tên tệp nào, bạn sẽ tự mình thực hiện. Bạn có thể thêm /ytham số vào movelệnh (trước lệnh "%i") để buộc ghi đè. Nếu bạn muốn một cái gì đó khác biệt, bạn sẽ cần một chương trình khác có thể tự động đổi tên mọi thứ cho bạn.

Ngoài ra, nếu bạn muốn sử dụng tệp này trong một tệp bó, hãy thay đổi tất cả %thành %%.


Không biết về FOR /r- tốt đẹp!
Daniel Beck

Wow, rất tuyệt vời. Tôi cúi chào mệnh lệnh của bạn.
Mokubai

2

Tạo một thư mục và sao chép tất cả các thư mục khác vào đó, sau đó nhấp chuột phải vào thư mục đó và chọn Tìm kiếm . Trong hộp tìm kiếm nhập *.*.

Điều này sẽ liệt kê tất cả các tập tin và thư mục. Chọn tất cả các tệp bạn muốn trong thư mục gốc của bạn và cắt chúng. Điều hướng đến thư mục gốc của bạn và dán tất cả các tệp ở đó.


tìm kiếm không tồn tại như là một lệnh trong cmd của tôi.
Rook

Richard đã không nói về lệnh aa. Đã chỉnh sửa câu trả lời của mình để làm cho nó rõ ràng hơn.
Isaac Rabinovitch

0

Cài đặt Cygwin (hoặc môi trường Unix khác cho Windows) và chạy như sau:

cd A
find . -type f -exec mv {} . \;

Tùy thuộc vào bạn mvfindcác biến thể, bạn có thể cần phải sử dụng find . -type f -exec mv -t . {} \;thay thế.
Daniel Beck

1
Đối với các cổng Windows gốc của nhiều công cụ Unix, tôi thích unxutils.sourceforge.net
Dennis

@Dennis UnxUtils rất hay, tiếc là khá cũ rồi. Nếu bạn đang sử dụng chúng tại thời điểm này, bạn có thể xác minh bài đăng của tôi hoạt động với họ không? mkdir -p a/a1 a/a2 a/a3 b/b1 b/b2 b/b3 ctouch a/a1/foo a/a1/bar a/a2/baz a/a3/qux b/b1/quux b/b2/quuux b/b3/quuuux c/cccđể chuẩn bị.
Daniel Beck

-1 Điều đó có thể đúng, nhưng tôi đã tìm hiểu về cách thực hiện trong cmd.
Rook

@Daniel Không còn nghi ngờ gì nữa, họ đã già đi nhiều năm rồi. Tôi chỉ cần thử find . -type f -exec mv {} . ;Và nó có vẻ hoạt động tốt.
Dennis
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.