Excluyendo archivos de extensión particular usando el comando DIR en la línea de comando de Windows

19

si quiero ver, por ejemplo, archivos de una extensión particular solo usando la lista de directorios, puedo hacerlo usando el comando:

DIR *.txt 

Y muestra todos los archivos con .txtextensión.
Ahora quiero saber, ¿hay algún comando con el que pueda excluir ciertas extensiones?
Por ejemplo, no quiero ver ningún archivo con extensión .exe, ¿cómo puedo hacer eso?

Johnydep
fuente

Respuestas:

26

DIR no permitirá lo que intentas hacer. Sin embargo, DIR junto con FINDSTR pueden resolver esto.

Por ejemplo, lo siguiente ignora todos los archivos .txt en la lista de DIR.

dir | findstr /v /i "\.txt$" 
I Desconocido
fuente
1
es posible que desee utilizar dir /b | findstr /v /i "\.txt$", porque dires la salida de la cabecera y los posibles archivos y carpetas incorrectas cuentan al final
phuclv
¿Por qué findstrmás justo find?
Sopalajo de Arrierez
Debido a que Find busca texto y FindStr admite expresiones regulares, sugerí Findstr. Si solo desea buscar una cadena exacta, encontrar también funcionaría bien.
IDesconocido el
8
dir /B | find /V ".txt"

Esto enumeraría todos los archivos y find filtraría todo lo que no contenga ".txt". Está lejos de ser perfecto, pero tal vez sea suficiente :)

Der Hochstapler
fuente
No es necesario /B, diría, pero prefiero esta respuesta siempre que no vea la necesidad de 'Findstr' (la aceptada real).
Sopalajo de Arrierez
3

Depende de su intérprete de comandos.

Microsoft cmdno tiene una instalación de este tipo, como se puede ver en las otras respuestas donde uno tiene que procesar posteriormente la salida dir. JP Software TCC / LE lo hace. Se llama rango de exclusión de archivos y se usa así para el ejemplo en su pregunta:

dir /[!*.exe] *

JdeBP
fuente
Gracias, pero creo que esta herramienta se ejecuta como un programa independiente. Estoy haciendo mi aplicación donde ejecuto un proceso externo usando shell de Windows o bash en ubuntu, por lo que esta herramienta no encajará, si proporcionan interruptores de línea cmd, entonces será útil.
Johnydep
1
Lo anterior claramente es un interruptor de línea de comando. Lea la documentación con hipervínculos. Por supuesto, en la mayoría de los lenguajes de programación es bastante tonto usar el shell para obtener el contenido del directorio , y estás en el StackExchange incorrecto para escribir aplicaciones.
JdeBP
gracias por la explicación, eso es cierto, pero es una solución alternativa para escanear los directorios que requieren Elevación y no quiero que mi código active el indicador UAC, cuando puedo obtener resultados del indicador cmd sin requerir un mayor privilegio.
Johnydep