Eliminar todo con excepciones del comando

Eliminar todo con excepciones del comando

Tengo una carpeta con alrededor de 50 archivos diferentes (NOMBRE1.jpg, NOMBRE2.jpg, NOMBRE3.jpg...).

Tengo un programa que se ejecuta y divide cada archivo en aproximadamente 4 archivos diferentes y les cambia el nombre (NOMBRE1-0.jpg, NOMBRE1-1.jpg, NOMBRE2-0.jpg, NOMBRE2-1.jpg...)

Quiero crear un archivo .bat que se ejecute y elimine todos los archivos que no sean archivos *-0.jpg.

Hasta ahora lo más cerca que he estado es la línea:

for %i in (*) do if not %i == "*.jpg" del "%i"

pero esto simplemente elimina todos los archivos de la carpeta, incluidos los -0.jpg que quiero guardar.

¿Existe una línea mejor para usar?

Respuesta1

Quiero eliminar todos los archivos que no sean archivos *-0.jpg.

Tengo un programa que se ejecuta y divide cada archivo en aproximadamente 4 archivos diferentes y les cambia el nombre (NOMBRE1-0.jpg, NOMBRE1-1.jpg, NOMBRE2-0.jpg, NOMBRE2-1.jpg...)

Utilice el siguiente archivo por lotes (test.cmd):

@echo off
setlocal enabledelayedexpansion
for /f "tokens=*" %%i in ('dir /b NAME?-?.jpg') do (
  rem get file name
  set _fname=%%~ni
  rem get last 2 characters of file name
  set _last2=!_fname:~-2!
  if [!_last2!] NEQ [-0] del "%%i"
  )

Ejemplo:

F:\test>dir *.jpg
 Volume in drive F is Expansion
 Volume Serial Number is 3656-BB63

 Directory of F:\test

08/12/2015  23:51                 0 NAME1-0.jpg
08/12/2015  23:51                 0 NAME1-1.jpg
08/12/2015  23:51                 0 NAME2-0.jpg
08/12/2015  23:51                 0 NAME2-1.jpg
               4 File(s)              0 bytes
               0 Dir(s)  1,776,919,613,440 bytes free

F:\test>test
F:\test>dir *.jpg
 Volume in drive F is Expansion
 Volume Serial Number is 3656-BB63

 Directory of F:\test

08/12/2015  23:51                 0 NAME1-0.jpg
08/12/2015  23:51                 0 NAME2-0.jpg
               2 File(s)              0 bytes
               0 Dir(s)  1,776,919,613,440 bytes free

Otras lecturas

  • Un índice AZ de la línea de comando CMD de Windows- Una excelente referencia para todo lo relacionado con la línea cmd de Windows.
  • directorio- Mostrar una lista de archivos y subcarpetas.
  • expansión retrasada habilitada- La expansión retrasada hará que las variables se expandan en el momento de la ejecución en lugar de en el momento del análisis.
  • para /f- Comando de bucle contra los resultados de otro comando.
  • si- Realizar condicionalmente un comando.
  • colocar- Mostrar, configurar o eliminar variables de entorno CMD. Los cambios realizados con SET permanecerán solo durante la sesión CMD actual.

información relacionada