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?

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$" 

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 :)


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] *


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.