29

if i want to see e.g. files of a particular extension only using dir listing, i can do that using the command:

DIR *.txt 

And it shows all files with .txt extension.
Now i want to know is there any command with wich i can exclude certain extensions?
For example, i don't want to see any file with extension .exe, how can i do that?

Johnydep
  • 1,155

5 Answers5

39

DIR wont allow what you are trying to do. However DIR along with FINDSTR can solve this.

e.g. The following ignores all .txt files in the DIR listing.

dir | findstr /v /i "\.txt$" 
IUnknown
  • 2,326
  • 1
  • 19
  • 21
14
dir /B | find /V ".txt"

This would list all files and find would filter out anything that doesn't contain ".txt". It's far from perfect, but maybe it's enough :)

Oliver Salzburg
  • 89,072
  • 65
  • 269
  • 311
3

It depends on your command interpreter.

Microsoft's cmd doesn't have such a facility, as you can see from the other answers where one has to post-process the output of dir. However, the tool from JP Software's TCC/LE has this feature. It is called a file exclusion range and is used like this for the example in your question:

dir /[!*.exe] *
Amin Ya
  • 150
JdeBP
  • 27,556
  • 1
  • 77
  • 106
0

For this purpose, define a macro using DOSKEY. I excluded directories and ignored case – YMMV. Also, /B seems like the most reasonable DIR option for filtering, /D and /W being inappropriate for the task, and the long formats /N (default) and /X containing, in some cases, additional text after the filename (for symlinks). Check it out on the command line:

DOSKEY  FIR=DIR/B/A-D^|FINDSTR /VIE $*
DOSKEY FLIR=DIR/X/A-D^|FINDSTR /VIE $*

FIR for filtered DIR, get it? :) And FLIR for the long version if needed. Then use it like this:

fir .jpg
flir jpg
fir "jpg htm"

The latter is because of how FINDSTR reads patterns supplied as arguments, as documented in the /?. Only the first argument is treated as a pattern, additional ones are interpreted as file names, even when running in a pipe.

I prefer FINDSTR over plain FIND because it has the funky /E switch which filters only at the end of the line, which seems preferable when filtering by file extension (but again, YMMV).

The handy SS64 site explains how to set up macros in a TXT file for permanent reuse. Beware, no caret ^ to escape special characters for macros stored in a text file.

To understand the basics of how macros ("Console aliases") work under the hood, read Eryk Sun's brief comments on SO.

Lumi
  • 1,646
  • 3
  • 15
  • 28
0

A work around is to utilize Notepad++

Hold alt and select your filenames/text from the dir command output and paste into Notepad++

Bookmark the lines with the text you want or do not want, then remove bookmarked or non-bookmarked lines under the search menu.