Cách hợp nhất các thư mục có tên tương tự với một tệp hàng loạt


0

Tôi đang cố gắng viết một lệnh có thể hợp nhất tất cả các thư mục trong một thư mục có tên tương tự. Bây giờ tất cả các thư mục này được đặt tên duy nhất vì vậy tôi nghĩ bạn có thể dựa trên khái niệm "tên tương tự" trong 5 ký tự đầu tiên của các thư mục.

thư mục sẽ giống như

longyellowbus-092092301
longyellowbus-92382012
5fatmimn-324535232
hintout-239119393
hintout-2391038949
hintout-2983419101
dogscats-293457893
2dummerboy-9293982
2dummerboy-29848292

và tôi muốn hợp nhất tất cả các thư mục có tên tương tự vào một thư mục và một số nội dung bên trong sẽ giống nhau để bạn có thể ghi đè lên. Vì vậy, về cơ bản kết quả cuối cùng sẽ như thế nào.

longyellowbus-092092301
5fatmimn-324535232
hintout-239119393
dogscats-293457893
2dummerboy-9293982

Các số ở cuối kết thúc sau dấu gạch ngang - thực tế tôi sẽ không thử xóa chúng sau khi hợp nhất để tất cả những gì còn lại chỉ là tên thư mục sạch.

longyellowbus
5fatmimn
hintout
dogscats
2dummerboy

Tôi có gốc cây và hy vọng các bạn có thể giúp đỡ. Đây chỉ là một phần của một lệnh lớn hơn mà tôi đã viết và đây là phần tôi đã bị vấp ngã.


Xin lưu ý rằng superuser.com không phải là dịch vụ viết mã / mã miễn phí. Nếu bạn cho chúng tôi biết những gì bạn đã cố gắng cho đến nay (bao gồm các tập lệnh / mã bạn đang sử dụng) và nơi bạn bị mắc kẹt thì chúng tôi có thể cố gắng giúp đỡ với các vấn đề cụ thể. Bạn cũng nên đọc Làm thế nào để tôi hỏi một câu hỏi hay? .
DavidPostill

Câu trả lời:


0

Lô sau phân tích cú pháp đầu ra của thư mục bằng cách tách các tên thư mục tại dấu phân cách -, %% A là mã thông báo đầu tiên và %% B phần còn lại. Nếu một thư mục như mã thông báo đầu tiên không tồn tại thì nó được đổi tên, nếu nội dung của thư mục được đặt tên dài bị buộc phải di chuyển và thư mục bị xóa sau đó.
Chỉnh sửa đường dẫn cho phù hợp với môi trường của bạn.

@Echo off
pushd "C:\path\to\your\base\folder"
for /f "Tokens=1* Delims=-" %%A in (
  'Dir /B /AD *-*'
) Do If Not Exist "%%A" (
  Ren "%%A-%%B" "%%A"
) Else (
  Move /Y "%%A-%%B\*" "%%A\"
  RmDir "%%A-%%B"
)
PopD
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.