Ausschließen von Dateien mit bestimmten Erweiterungen mithilfe des Befehls DIR in der Windows-Befehlszeile

19

wenn ich zB Dateien einer bestimmten Erweiterung nur mit dir listing sehen will, kann ich das mit dem Befehl machen:

DIR *.txt 

Und es zeigt alle Dateien mit der .txtErweiterung.
Jetzt möchte ich wissen, gibt es einen Befehl, mit dem ich bestimmte Erweiterungen ausschließen kann?
Ich möchte zum Beispiel keine Datei mit der Erweiterung sehen .exe. Wie kann ich das tun?

Johnydep
quelle

Antworten:

26

DIR lässt nicht zu, was Sie versuchen zu tun. DIR kann dies jedoch zusammen mit FINDSTR lösen.

Beispiel: Im Folgenden werden alle TXT-Dateien in der DIR-Liste ignoriert.

dir | findstr /v /i "\.txt$" 
IUnbekannt
quelle
1
Vielleicht möchten Sie verwenden, dir /b | findstr /v /i "\.txt$"weil dirder Header ausgegeben wird und die möglichen falschen Dateien und Ordner am Ende gezählt werden
phuclv
Warum findstrgerade vorbei find?
Sopalajo de Arrierez
Da find nach Text sucht und findstr reguläre Ausdrücke unterstützt, schlug ich Findstr vor. Wenn Sie nur nach einer genauen Zeichenfolge suchen möchten, funktioniert dies ebenfalls.
IUnbekannt
8
dir /B | find /V ".txt"

Dies würde alle Dateien auflisten und alles herausfiltern, was nicht ".txt" enthält. Es ist alles andere als perfekt, aber vielleicht reicht es :)

Der Hochstapler
quelle
Keine Notwendigkeit /B, würde ich sagen, aber ich bevorzuge diese Antwort, solange ich die Notwendigkeit für "findstr" (die tatsächlich akzeptierte) nicht sehe.
Sopalajo de Arrierez
3

Dies hängt von Ihrem Befehlsinterpreter ab.

Microsoft cmdhat keine solche Funktion, wie Sie aus den anderen Antworten ersehen können, bei denen die Ausgabe von nachbearbeitet werden muss dir. JP Software's TCC / LE macht es. Es wird als Dateiausschlussbereich bezeichnet und wird für das Beispiel in Ihrer Frage wie folgt verwendet:

dir /[!*.exe] *

JdeBP
quelle
Vielen Dank, aber ich denke, dass dieses Tool als eigenständiges Programm ausgeführt wird. Ich mache meine Anwendung, in der ich externe Prozesse mithilfe von Windows Shell oder Bash in Ubuntu ausführe, sodass dieses Tool nicht passt. Wenn sie cmd-Zeilenschalter bereitstellen, ist es nützlich.
Johnydep
1
Der aforegiven eindeutig ist ein Befehlszeilenschalter. Lesen Sie die Dokumentation mit Hyperlinks. Natürlich ist es in den meisten Programmiersprachen ziemlich albern, die Shell zu verwenden , um Verzeichnisinhalte zu erhalten , und Sie befinden sich beim Schreiben von Anwendungen auf dem falschen StackExchange.
JdeBP
danke für die erklärung, das stimmt, aber es ist eine umgehungslösung für das scannen der verzeichnisse, die eine erhöhung erfordern, und ich möchte meinen code nicht dazu bringen, die uac-aufforderung auszulösen, wenn ich ergebnisse von der cmd-aufforderung erhalten kann, ohne höhere berechtigungen zu benötigen.
Johnydep