Z wyłączeniem plików określonego rozszerzenia za pomocą polecenia DIR w wierszu polecenia systemu Windows

20

jeśli chcę zobaczyć np. pliki określonego rozszerzenia tylko z listą katalogów, mogę to zrobić za pomocą polecenia:

DIR *.txt 

I pokazuje wszystkie pliki z .txtrozszerzeniem.
Teraz chcę wiedzieć, czy jest jakieś polecenie, za pomocą którego mogę wykluczyć niektóre rozszerzenia?
Na przykład nie chcę widzieć żadnego pliku z rozszerzeniem .exe, jak mogę to zrobić?

Johnydep
źródło

Odpowiedzi:

27

DIR nie pozwoli na to, co próbujesz zrobić. Jednak DIR wraz z FINDSTR mogą to rozwiązać.

np. Poniższe ignoruje wszystkie pliki .txt na liście DIR.

dir | findstr /v /i "\.txt$" 
Nieznany
źródło
2
możesz użyć, dir /b | findstr /v /i "\.txt$"ponieważ dirwyświetli nagłówek i możliwe niepoprawne pliki i foldery na końcu
phuclv
Dlaczego findstrpo prostu find?
Sopalajo de Arrierez
Ponieważ wyszukiwanie wyszukiwania tekstu i findstr obsługuje wyrażenia regularne, zasugerowałem Findstr. Jeśli chcesz po prostu wyszukać dokładny ciąg znaków, również działałoby.
Nieznany
8
dir /B | find /V ".txt"

Spowoduje to wyświetlenie listy wszystkich plików i znalezienie odfiltruje wszystko, co nie zawiera „.txt”. Jest daleki od ideału, ale może wystarczy :)

Der Hochstapler
źródło
Nie ma potrzeby /B, powiedziałbym, ale wolę tę odpowiedź tak długo, jak nie widzę potrzebę „findstr` (rzeczywista Zaakceptowany jeden).
Sopalajo de Arrierez
3

To zależy od twojego interpretera poleceń.

Microsoft cmdnie ma takiej funkcji, jak widać z innych odpowiedzi, w których należy przetworzyć dane wyjściowe dir. Tak robi JP Software TCC / LE . Nazywa się to zakresem wykluczania plików i jest używany w następujący sposób w przykładzie w twoim pytaniu:

katalog /[!*.exe] *

JdeBP
źródło
Dziękuję, ale myślę, że to narzędzie działa jako samodzielny program. Tworzę moją aplikację, w której uruchamiam zewnętrzny proces za pomocą powłoki systemu Windows lub bash w Ubuntu, więc to narzędzie nie będzie pasować, jeśli zapewnią przełączniki linii cmd, to będzie przydatne.
Johnydep,
1
Wyraźnie jest to przełącznik linii poleceń. Przeczytaj hiperłączną dokumentację. Oczywiście w większości języków programowania dość głupie jest używanie tej powłoki do uzyskiwania zawartości katalogu , a masz niewłaściwe StackExchange do pisania aplikacji.
JdeBP
dziękuję za wyjaśnienie, to prawda, ale jest to obejście dla skanowania tych katalogów, które wymagają Elevation i nie chcę, aby mój kod wyzwalał monit UAC, gdy mogę uzyskać wyniki z wiersza polecenia cmd bez konieczności posiadania większych uprawnień.
Johnydep