2016-07-21 10 views
1

Ich versuche, eine Verzeichnisliste von nur Dateien mit einer bestimmten Erweiterung zu erhalten. Auf den ersten Blick scheint dies eine einfache Sache zu sein aber zu tun, dieses einfache Beispiel check out:Wie passen Sie eine genaue Dateierweiterung unter Windows/Kommandozeile/Datei öffnen Dialog?

C:\CODE\metcal>dir /b *.exe 
metcal.exe 
metcal.exe1 

Beachten Sie, dass diese metcal.**exe** und metcal.**exe1** wie Streichhölzer zurück.

Mit Python-Dateien ein ähnliches passiert:

C:\CODE\metcal>dir /b *.py 
metcal.py 
metcal.pyc 

Hinweis erneut Windows hat festgestellt, dass *.py etwas nimmt, das mit beginnt *.py so fängt es die .pyc als auch Dateien.

Gibt es eine Möglichkeit, nur die Extensions zu erhalten, die genau übereinstimmen? In der obigen Python-Dateien Beispiel würde ich folgende auftreten (natürlich mit der richtigen Syntax für * Py substituiert) wie

C:\CODE\metcal>dir /b *.py 
metcal.py 

Als Hinweis der passende unter Windows nicht so einfach wie es scheint.

*.exe Spiele foo.exe, foo.exe1, foo.exeabcde aber nichtfoo.exe.bak

andere Fragen auf SO Es gibt, die ähnlich sind, die zu lange/kurze Dateinamen verwandt sind. Das Beispiel * .py und * .pyc sollte hier keine Namensmangel-Maschinerie einführen.

** Ich habe auf XP und Win7 Maschinen experimentiert und dieses Verhalten ist nicht in den Cmd Prompt und Datei öffnen Dialoge konsistent. Dieses uneinheitliche Verhalten lässt mich vermuten, dass dieses Problem mit Einstellungen von etwas zusammenhängt. **

+0

Mit „DOS“ meinen Sie die Windows-Eingabeaufforderung 'cmd.exe' Befehl, Recht? – aschipfl

+1

Ich denke, dass das gegebene Muster auch gegen den 8.3-Format-Dateinamen geprüft wird, also passt '* .exe' auch' * .exe1'; wenn die Erweiterung weniger als 3 Zeichen lang ist, wie '* .py', scheint es zu funktionieren, Dateien wie' * .pyc' werden nicht zurückgegeben - zumindest auf meinem Windows 7 x64-Rechner ... Für eine genaue Filterung verwende ich 'findstr', so:' dir/B "* .exe" | findstr/L/E ".doc" ' – aschipfl

+2

Mögliches Duplikat von [Wildcard, um Dateien per exakter Erweiterung zu erhalten] (http://stackoverflow.com/questions/20761052/wildcard-to-getfiles-by-exact-extension) –

Antwort

0

Also, wenn Sie nur die Erweiterungen (.py und .pyc) erhalten möchten, sollten Sie wie auf diese Weise versuchen:

@echo off 
dir /b *.py* 
pause 
+0

Nein, das ist das Problem. Wenn ich nach * .py frage, erwarte ich nur .py Erweiterung, aber ich bekomme .py UND .pyc ... und .pyo. Was ich möchte ist die Syntax für NUR bekommen .py. – Hucker