Loại trừ các tệp của phần mở rộng cụ thể bằng lệnh DIR trên dòng lệnh windows


19

Nếu tôi muốn xem ví dụ: các tệp của một tiện ích mở rộng cụ thể chỉ sử dụng danh sách dir, tôi có thể làm điều đó bằng lệnh:

DIR *.txt 

Và nó hiển thị tất cả các tập tin với .txtphần mở rộng.
Bây giờ tôi muốn biết có bất kỳ lệnh nào với wich tôi có thể loại trừ các phần mở rộng nhất định không?
Ví dụ: tôi không muốn xem bất kỳ tệp nào có phần mở rộng .exe, làm thế nào tôi có thể làm điều đó?

Câu trả lời:


26

TRỰC TIẾP sẽ không cho phép những gì bạn đang cố gắng làm. Tuy nhiên, cùng với FINDSTR có thể giải quyết điều này.

ví dụ: Phần sau bỏ qua tất cả các tệp .txt trong danh sách DIR.

dir | findstr /v /i "\.txt$" 

1
bạn có thể muốn sử dụng dir /b | findstr /v /i "\.txt$"dirsẽ xuất tiêu đề và các tệp và thư mục không chính xác có thể được tính vào cuối
phuclv

Tại sao findstrchỉ hơn find?
Sopalajo de Arrierez

Bởi vì tìm kiếm cho văn bản và findstr hỗ trợ regexes tôi đã đề xuất Findstr. Nếu bạn chỉ muốn tìm kiếm một chuỗi chính xác, nó cũng sẽ hoạt động tốt.
IUnknown

8
dir /B | find /V ".txt"

Điều này sẽ liệt kê tất cả các tệp và tìm sẽ lọc ra bất cứ thứ gì không chứa ".txt". Nó không hoàn hảo, nhưng có lẽ nó đã đủ :)


Không cần /B, tôi sẽ nói, nhưng tôi thích câu trả lời này miễn là tôi không thấy sự cần thiết của 'findstr` (thực tế được chấp nhận).
Sopalajo de Arrierez

3

Nó phụ thuộc từ trình thông dịch lệnh của bạn.

Microsoft cmdkhông có một cơ sở như vậy, như bạn có thể thấy từ các câu trả lời khác, nơi người ta phải xử lý hậu kỳ của sản phẩm dir. TCC / LE của JP Software cũng vậy. Nó được gọi là phạm vi loại trừ tệp và được sử dụng như thế này cho ví dụ trong câu hỏi của bạn:

thư mục /[!*.exe] *


Cảm ơn bạn, nhưng tôi nghĩ công cụ này chạy như một chương trình độc lập. Tôi đang tạo ứng dụng của mình trong đó tôi chạy quy trình bên ngoài bằng windows shell hoặc bash trong ubfox, vì vậy công cụ này sẽ không phù hợp, Nếu chúng cung cấp các chuyển đổi dòng cmd thì nó sẽ hữu ích.
Johnydep

1
Các aforgiven rõ ràng một chuyển đổi dòng lệnh. Đọc tài liệu siêu liên kết. Tất nhiên, trong hầu hết các ngôn ngữ lập trình, việc sử dụng shell để lấy nội dung thư mục là khá ngớ ngẩn và bạn đang sử dụng StackExchange sai cho việc viết ứng dụng.
JdeBP

cảm ơn vì lời giải thích, điều đó đúng nhưng đó là một cách giải quyết để quét các thư mục yêu cầu Độ cao và tôi không muốn tạo mã nhắc UAC, khi tôi có thể nhận được kết quả từ dấu nhắc cmd mà không yêu cầu đặc quyền cao hơn.
Johnydep
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.