2013-03-22 29 views
5

Tôi muốn tập lệnh này liệt kê tất cả các thư mục có chứa "đã xóa" trong tên thư mục nhưng không nếu chúng nằm trong thư mục có tên "đã hoàn tất".Kịch bản lệnh để liệt kê các thư mục nhưng loại trừ các thư mục cụ thể

Đối exampel: liệt kê các thư mục nếu nó trong C:\temp và nếu nó trong C:\temp\random_folder_name nhưng không phải không nếu nó trong C:\temp\done

dir /s "C:\temp" | findstr "\deleted" 

truyện ngắn, loại trừ tất cả các thư mục có tên là "thực hiện" và nội dung của họ.

Trả lời

7

Bạn đang ở gần đó .

findstr/v trả về tất cả các dòng, không chứa chuỗi

dir/quảng cáo sẽ chỉ hiển thị các thư mục (Atrribut = thư mục)

dir /s /ad "C:\temp" | findstr "\deleted" | findstr /v "\done" 
+0

Ah - nhưng điều đó sẽ loại trừ các thư mục và tệp có tên 'done *', không chỉ ''done'' – Magoo

+0

/ad loại bỏ tên tệp - lỗi của tôi. Tuy nhiên, không có '\' sau '\ done', nó cũng sẽ khớp với' \ doneeverything'. OTOH, bằng cách sử dụng '\ done \' sẽ được miễn các thư mục 'done' như' c: \ được \ all \ done \ here' NHƯNG sẽ không loại bỏ các thư mục kết thúc '\ done' như' c: \ đã \ không \ tất cả \ done'. Để làm điều đó, bạn phải thêm một '| findstr/i/e/v '\ done''. – Magoo

+0

để loại trừ tên thư mục (chỉ sử dụng tên tệp) dir/a-d. (xem dir /?) – Stephan

1
dir /s "C:\temp" | findstr "\deleted"|findstr /i /v "\temp\done\" 

nên phù hợp với những hóa đơn

  • hoặc loại bỏ các phần \temp nếu bạn muốn bỏ qua bất kỳ tên mà đã 'làm' như một thư mục trên con đường
+0

có -/i chắc chắn là một ý tưởng hay! – Stephan

+1

nó thực hiện công việc hoàn hảo nếu thư mục "thực hiện" nằm trong đường dẫn cụ thể đó. Tôi muốn nó để loại trừ bất kỳ thư mục được gọi là "thực hiện" không có vấn đề ở đâu, trong trường hợp này C: \ Temp, nó được. Xin lỗi nếu tôi không rõ ràng về điểm đó. – Tomas

0

trong rất nhiều trường hợp:

dir /b /s /aa <path> 

Sẽ thực hiện thủ thuật./b cho đầu ra ít tiết,/s cho đệ quy (thư mục phụ) và/aa chỉ cho các tệp sẵn sàng để được lưu trữ. Đây thường là trường hợp đối với các tệp được tạo bình thường - nó mặc định bật lên!

Các vấn đề liên quan