Pregunta

En MS-DOS, si ingreso dir * .pdf , obtendré todos los archivos PDF en un directorio. ¿Hay alguna manera de obtener todo pero archivos PDF? Algo así como dir! *. Pdf ?

¡Gracias!

¿Fue útil?

Solución

Creo que hay una opción / v para los findtr que es equivalente a grep -v (incluya todas las líneas que no contienen el texto. Por lo tanto, estaría mirando:

dir | findstr /vi ".pdf"

La sintaxis puede ser ligeramente diferente, no he tenido mucha necesidad de usarla y no ejecuto Windows en mi ubicación actual.

Usar findtr /? desde un símbolo del sistema para más detalles.

O, si instala CygWin (mi herramienta de elección para este tipo de cosas), puede usar grep:

ls -al | grep -vi '\.pdf

Anexo :

En realidad no me di cuenta de esto, pero aparentemente findtr también admite expresiones regulares para que pueda usar:

dir | findstr /vi "\.pdf<*>quot;

igual que grep (no he probado esto, solo lo encontré en TechNet , por lo que deberá probarlo usted mismo).

Anexo :

En realidad no me di cuenta de esto, pero aparentemente findtr también admite expresiones regulares para que pueda usar:

<*>

igual que grep (no he probado esto, solo lo encontré en TechNet , por lo que deberá probarlo usted mismo).

Otros consejos

Puede combinar el directorio con findtr para hacer casi lo que quiera:

dir * | findstr /vi .pdf

Sin embargo, tenga en cuenta que si un archivo se llama my.pdf.converted.txt, se arrojará incorrectamente aquí.

Si REALMENTE quieres ponerte elegante, aquí hay una versión completamente correcta, más apropiada para un script por lotes:

for /f %a in ('dir /b *') do @if "%~xa" neq ".txt" echo %a

Buena suerte, no importa lo que intentes :) DOS es "divertido".

Sé que ya está funcionando para ti, pero puedes hacerlo con la mayoría de las versiones de DOS (al menos las que recuerdo) como esta.

Attrib * .bad + H
dir / oE
Attrib * .bad -H

Lo que tiene el efecto de ocultar los que no desea mostrar, hacer el directorio y luego mostrarlos. Es un poco desagradable, debo admitirlo, pero parece que funciona.

En MS-DOS o CMD simplemente escribe para evitar archivos pdf:

dir | find/V ".pdf"

Pero recuerde que el recuento de archivos en la parte inferior de la salida incluirá los archivos pdf.

Además, también puede usar este comando para otras extensiones reemplazando " .pdf " a " .xxx " ;, donde xxx es cualquier extensión.

Aquí hay una manera simple sin usar findtr / find o canalizar a otro comando:

for %%a in (*) do (
    if not exist %%~Na.pdf   echo %%a
)

Básicamente, el bucle for recorrerá todos los archivos. El " si no existe " asegurará que no se imprima ningún archivo * .pdf

El %% ~ Na significa usar el nombre de archivo de %% una variable sin su extensión.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top